{"_id":"@geonosis/observability","_rev":"27-c2d7bcb00222b61072a42d01d7458c63","name":"@geonosis/observability","dist-tags":{"latest":"3.0.0"},"versions":{"1.0.0":{"name":"@geonosis/observability","version":"1.0.0","keywords":["observability","error-tracking","health-check","posthog","tracing","result","workers"],"license":"Apache-2.0","_id":"@geonosis/observability@1.0.0","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/observability","bin":{"geonosis-observability":"bin/geonosis-observability.mjs"},"dist":{"shasum":"4ff3e964038df6acf6b6780b44b78c8f1104a742","tarball":"https://registry.npmjs.org/@geonosis/observability/-/observability-1.0.0.tgz","fileCount":15,"integrity":"sha512-q5/rpmz5omRp0lgk7UIe/kTtVReW1c4PiXvrtIwz23tYecvb2vZqGk5rt/4xE6vYUE1lrdUlu/xlui4dLA8CWw==","signatures":[{"sig":"MEUCIQCoOZ6iqFIuqPcPQi61OS2tKIPYMa82B1+tbGmLr4cZdAIgDuseCs/KJAwrBNWmgOcJjbcnAlWYNuxOTNcPIFtojxg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79499},"main":"dist/index.js","type":"module","engines":{"node":">=22"},"exports":{".":"./dist/index.js","./health":"./dist/health/index.js","./posthog":"./dist/posthog/index.js"},"scripts":{"build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bayraak","email":"bayraak@gmail.com"},"repository":{"url":"git+https://github.com/microcompanies/geonosis.git","type":"git","directory":"packages/observability"},"description":"Ports whose answer can say failed: an ErrorSink and a Tracer returning Result, one attribute vocabulary (tenant as a group id, never a person), a memory sink, envelope-id dedupe, a PostHog adapter, a tiered health registry, and a probe that plants an erro","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.0.0","posthog-node":"5.50.0","better-result":"3.0.1"},"peerDependencies":{"zod":"^4.0.0","posthog-node":">=5.49.0","better-result":"^3.0.0"},"peerDependenciesMeta":{"zod":{"optional":true},"posthog-node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/observability_1.0.0_1788106378833_0.5690043051582527","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@geonosis/observability","version":"1.1.0","keywords":["observability","error-tracking","health-check","posthog","tracing","result","workers"],"license":"Apache-2.0","_id":"@geonosis/observability@1.1.0","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/observability","bin":{"geonosis-observability":"bin/geonosis-observability.mjs"},"dist":{"shasum":"e0f1901c1c7482caf85571bb214f559c981ac4f7","tarball":"https://registry.npmjs.org/@geonosis/observability/-/observability-1.1.0.tgz","fileCount":15,"integrity":"sha512-tZoohyS9N0HXg1HJulg0nJvC83Up2GYGWJXAbKhRUqqmq/tjip+VpBSbgsg7BnsKEqhN1jbfKqK880dRrzaQ4g==","signatures":[{"sig":"MEQCIARjzZt20GDNF8KK9uHHB+70XjOt221DpSclTQYoqUDqAiA4ywvtzMqcyXqVkUUOHv5rtGzWXhHrcYlHYJbrZbHVzA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80647},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./health":{"types":"./dist/health/index.d.ts","default":"./dist/health/index.js"},"./posthog":{"types":"./dist/posthog/index.d.ts","default":"./dist/posthog/index.js"}},"scripts":{"build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bayraak","email":"bayraak@gmail.com"},"repository":{"url":"git+https://github.com/microcompanies/geonosis.git","type":"git","directory":"packages/observability"},"description":"Ports whose answer can say failed: an ErrorSink and a Tracer returning Result, one attribute vocabulary (tenant as a group id, never a person), a memory sink, envelope-id dedupe, a PostHog adapter, a tiered health registry, and a probe that plants an erro","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.0.0","posthog-node":"5.50.0","better-result":"3.0.1"},"peerDependencies":{"zod":"^4.0.0","posthog-node":">=5.49.0","better-result":"^3.0.0"},"peerDependenciesMeta":{"zod":{"optional":true},"posthog-node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/observability_1.1.0_1788114850570_0.578430766149439","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@geonosis/observability","version":"1.2.0","keywords":["observability","error-tracking","health-check","posthog","tracing","result","workers"],"license":"Apache-2.0","_id":"@geonosis/observability@1.2.0","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/observability","bin":{"geonosis-observability":"bin/geonosis-observability.mjs"},"dist":{"shasum":"0fbb1c99e43c2adbc5af7207ed9e74fd2d9f3d59","tarball":"https://registry.npmjs.org/@geonosis/observability/-/observability-1.2.0.tgz","fileCount":15,"integrity":"sha512-MK1N8xCLFiTqj+6jY3aPDBhrrNZ0QJPo244o1O7S/G8TmxEUcO0FZDGE1khSkzIrDWOqGPSL7PQmD/UwoGbpRw==","signatures":[{"sig":"MEQCIA78FHpFomvtahGtUs7H6bzKUv+RTHJSiTwIERf0UR7sAiA+/V1g6/ROrDNQ1y1HKQ4C+t+lmpPtVF+x0momyD7cBA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80647},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./health":{"types":"./dist/health/index.d.ts","default":"./dist/health/index.js"},"./posthog":{"types":"./dist/posthog/index.d.ts","default":"./dist/posthog/index.js"}},"scripts":{"build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bayraak","email":"bayraak@gmail.com"},"repository":{"url":"git+https://github.com/microcompanies/geonosis.git","type":"git","directory":"packages/observability"},"description":"Ports whose answer can say failed: an ErrorSink and a Tracer returning Result, one attribute vocabulary (tenant as a group id, never a person), a memory sink, envelope-id dedupe, a PostHog adapter, a tiered health registry, and a probe that plants an erro","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.0.0","posthog-node":"5.50.0","better-result":"3.0.1"},"peerDependencies":{"zod":"^4.0.0","posthog-node":">=5.49.0","better-result":"^3.0.0"},"peerDependenciesMeta":{"zod":{"optional":true},"posthog-node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/observability_1.2.0_1788119036931_0.7975170369435771","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@geonosis/observability","version":"1.3.0","keywords":["observability","error-tracking","health-check","posthog","tracing","result","workers"],"license":"Apache-2.0","_id":"@geonosis/observability@1.3.0","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/observability","bin":{"geonosis-observability":"bin/geonosis-observability.mjs"},"dist":{"shasum":"ed7caff6fd82dd438fab3bc4d5cc799b6a52ea71","tarball":"https://registry.npmjs.org/@geonosis/observability/-/observability-1.3.0.tgz","fileCount":20,"integrity":"sha512-YGR20DiqQ0raLQ6R9TIS+ZQXQ5CsKijk4aYq3/RVB9uz/MyoujD2+9ay/0hYw7wPamAo3RZTP2lcMtrYDoEAdQ==","signatures":[{"sig":"MEMCIADoZZaPZHTxRqGq2cPWxEKWMWlt3DeKc+lYjYvP8ly4Ah8KyyP8VfyuzVQBmRhaFzfquCj5gcyAd3Qo+5nEPoz+","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":144901},"main":"dist/index.cjs","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./health":{"import":{"types":"./dist/health/index.d.ts","default":"./dist/health/index.js"},"require":{"types":"./dist/health/index.d.cts","default":"./dist/health/index.cjs"}},"./posthog":{"import":{"types":"./dist/posthog/index.d.ts","default":"./dist/posthog/index.js"},"require":{"types":"./dist/posthog/index.d.cts","default":"./dist/posthog/index.cjs"}}},"scripts":{"build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bayraak","email":"bayraak@gmail.com"},"repository":{"url":"git+https://github.com/microcompanies/geonosis.git","type":"git","directory":"packages/observability"},"description":"Ports whose answer can say failed: an ErrorSink and a Tracer returning Result, one attribute vocabulary (tenant as a group id, never a person), a memory sink, envelope-id dedupe, a PostHog adapter, a tiered health registry, and a probe that plants an erro","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.0.0","posthog-node":"5.50.0","better-result":"3.0.1"},"peerDependencies":{"zod":"^4.0.0","posthog-node":">=5.49.0","better-result":"^3.0.0"},"peerDependenciesMeta":{"zod":{"optional":true},"posthog-node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/observability_1.3.0_1788254757897_0.09074995795336838","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"@geonosis/observability","version":"1.4.0","keywords":["observability","error-tracking","health-check","posthog","tracing","result","workers"],"license":"Apache-2.0","_id":"@geonosis/observability@1.4.0","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/observability","bin":{"geonosis-observability":"bin/geonosis-observability.mjs"},"dist":{"shasum":"6149f0ca4c30fe4fd87b668fdb1fd23ac72d7890","tarball":"https://registry.npmjs.org/@geonosis/observability/-/observability-1.4.0.tgz","fileCount":20,"integrity":"sha512-dA2ln2FbfYvjMvoANokuyP2cznDFn7xyLWWV2KGZM3yy4OdPc6UbsD0qiu8A9u+GYy4Ini8B6wdWZVUGRBgLXg==","signatures":[{"sig":"MEUCIQDSquUXeApAXdapXupf06m54TmZ9deWe8MaVizzN1BUHgIgHix4PgrZtl5kYPLXnmXVa0ki7vuYYukYA8yA+gEOnmY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":144901},"main":"dist/index.cjs","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./health":{"import":{"types":"./dist/health/index.d.ts","default":"./dist/health/index.js"},"require":{"types":"./dist/health/index.d.cts","default":"./dist/health/index.cjs"}},"./posthog":{"import":{"types":"./dist/posthog/index.d.ts","default":"./dist/posthog/index.js"},"require":{"types":"./dist/posthog/index.d.cts","default":"./dist/posthog/index.cjs"}}},"scripts":{"build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bayraak","email":"bayraak@gmail.com"},"repository":{"url":"git+https://github.com/microcompanies/geonosis.git","type":"git","directory":"packages/observability"},"description":"Ports whose answer can say failed: an ErrorSink and a Tracer returning Result, one attribute vocabulary (tenant as a group id, never a person), a memory sink, envelope-id dedupe, a PostHog adapter, a tiered health registry, and a probe that plants an erro","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.0.0","posthog-node":"5.50.0","better-result":"3.0.1"},"peerDependencies":{"zod":"^4.0.0","posthog-node":">=5.49.0","better-result":"^3.0.0"},"peerDependenciesMeta":{"zod":{"optional":true},"posthog-node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/observability_1.4.0_1788268906118_0.48840021082524565","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@geonosis/observability","version":"2.0.0","keywords":["observability","error-tracking","health-check","posthog","tracing","result","workers"],"license":"Apache-2.0","_id":"@geonosis/observability@2.0.0","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/observability","bin":{"geonosis-observability":"bin/geonosis-observability.mjs"},"dist":{"shasum":"4dbb5fd7b86230d4b2f6d0eb9c1813ea38ed639b","tarball":"https://registry.npmjs.org/@geonosis/observability/-/observability-2.0.0.tgz","fileCount":20,"integrity":"sha512-2Ze2c2kkeG+h0ki8T2xyLDSV71Abu6EBbrZ3QpzXB6u6GcPLOARv3mh+OFPoq5h4bZaxkHzv+Oqe51miJHOA5g==","signatures":[{"sig":"MEYCIQCj58a4MfzLTJDpxYSR/pTqjkv8XIyQOjaT9m1Gk4OrMQIhANTdGo2CbnPmvLQW1dT3ZGHJTAt0ot/zvwjXcIN6d609","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":146404},"main":"dist/index.cjs","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./health":{"import":{"types":"./dist/health/index.d.ts","default":"./dist/health/index.js"},"require":{"types":"./dist/health/index.d.cts","default":"./dist/health/index.cjs"}},"./posthog":{"import":{"types":"./dist/posthog/index.d.ts","default":"./dist/posthog/index.js"},"require":{"types":"./dist/posthog/index.d.cts","default":"./dist/posthog/index.cjs"}}},"scripts":{"build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bayraak","email":"bayraak@gmail.com"},"repository":{"url":"git+https://github.com/microcompanies/geonosis.git","type":"git","directory":"packages/observability"},"description":"Ports whose answer can say failed: an ErrorSink and a Tracer returning Result, one attribute vocabulary (tenant as a group id, never a person), a memory sink, envelope-id dedupe, a PostHog adapter, a tiered health registry, and a probe that plants an erro","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.0.0","posthog-node":"5.50.0","better-result":"3.0.1"},"peerDependencies":{"zod":"^4.0.0","posthog-node":">=5.49.0","better-result":"^3.0.0"},"peerDependenciesMeta":{"zod":{"optional":true},"posthog-node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/observability_2.0.0_1788332149956_0.9992503434072058","host":"s3://npm-registry-packages-npm-production"}},"2.1.0":{"name":"@geonosis/observability","version":"2.1.0","keywords":["observability","error-tracking","health-check","posthog","tracing","result","workers"],"license":"Apache-2.0","_id":"@geonosis/observability@2.1.0","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/observability","bin":{"geonosis-observability":"bin/geonosis-observability.mjs"},"dist":{"shasum":"19db36f14e2672642c800e01a5fb1f02e08be146","tarball":"https://registry.npmjs.org/@geonosis/observability/-/observability-2.1.0.tgz","fileCount":20,"integrity":"sha512-5JgWm5+hfH4IKV9TaBe15XMw0HsVxnjNRRVYFQ3cVPKte+1/GI50VLHMF2Cy5fjT55PZ7I+IhNSh6Dda76+34A==","signatures":[{"sig":"MEQCIB3QG7GM1dqLTvuVuky9QEZF3R62H0DmoKEufgrmmhZDAiBopUjtprZcMPLpQq+unE5Ec0NLQt2XdZTeRtVILjBbEQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":146412},"main":"dist/index.cjs","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./health":{"import":{"types":"./dist/health/index.d.ts","default":"./dist/health/index.js"},"require":{"types":"./dist/health/index.d.cts","default":"./dist/health/index.cjs"}},"./posthog":{"import":{"types":"./dist/posthog/index.d.ts","default":"./dist/posthog/index.js"},"require":{"types":"./dist/posthog/index.d.cts","default":"./dist/posthog/index.cjs"}}},"scripts":{"build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bayraak","email":"bayraak@gmail.com"},"repository":{"url":"git+https://github.com/microcompanies/geonosis.git","type":"git","directory":"packages/observability"},"description":"Ports whose answer can say failed: an ErrorSink and a Tracer returning Result, one attribute vocabulary (tenant as a group id, never a person), a memory sink, envelope-id dedupe, a PostHog adapter, a tiered health registry, and a probe that plants an erro","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.0.0","posthog-node":"5.50.0","better-result":"3.0.1"},"peerDependencies":{"zod":"^4.0.0","posthog-node":">=5.49.0","better-result":"^3.0.0"},"peerDependenciesMeta":{"zod":{"optional":true},"posthog-node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/observability_2.1.0_1788357156249_0.4647302373104847","host":"s3://npm-registry-packages-npm-production"}},"2.2.0":{"name":"@geonosis/observability","version":"2.2.0","keywords":["observability","error-tracking","health-check","posthog","tracing","result","workers"],"license":"Apache-2.0","_id":"@geonosis/observability@2.2.0","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/observability","bin":{"geonosis-observability":"bin/geonosis-observability.mjs"},"dist":{"shasum":"1fae26023f19cfb85541f640b6bf0bb9f0cd26d2","tarball":"https://registry.npmjs.org/@geonosis/observability/-/observability-2.2.0.tgz","fileCount":20,"integrity":"sha512-Ry4D+ANrctW5XawjlIoo0NgFd54w5GerZqR+1jLGZLb4YP9FD9Dlhvkrm3A0aDyfSWnicvpX2ram3X6WjWFK6Q==","signatures":[{"sig":"MEQCIC/5Cnx/L4abZ5PedbNCUSb/n5QnLZvPXOHYXnrWeenRAiBsL697yS0V+i5yqW+bzys4NNxJ2HKJsD94D0tU9loeMQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":146412},"main":"dist/index.cjs","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./health":{"import":{"types":"./dist/health/index.d.ts","default":"./dist/health/index.js"},"require":{"types":"./dist/health/index.d.cts","default":"./dist/health/index.cjs"}},"./posthog":{"import":{"types":"./dist/posthog/index.d.ts","default":"./dist/posthog/index.js"},"require":{"types":"./dist/posthog/index.d.cts","default":"./dist/posthog/index.cjs"}}},"scripts":{"build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bayraak","email":"bayraak@gmail.com"},"repository":{"url":"git+https://github.com/microcompanies/geonosis.git","type":"git","directory":"packages/observability"},"description":"Ports whose answer can say failed: an ErrorSink and a Tracer returning Result, one attribute vocabulary (tenant as a group id, never a person), a memory sink, envelope-id dedupe, a PostHog adapter, a tiered health registry, and a probe that plants an erro","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.0.0","posthog-node":"5.50.0","better-result":"3.0.1"},"peerDependencies":{"zod":"^4.0.0","posthog-node":">=5.49.0","better-result":"^3.0.0"},"peerDependenciesMeta":{"zod":{"optional":true},"posthog-node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/observability_2.2.0_1788369597279_0.9242011870489415","host":"s3://npm-registry-packages-npm-production"}},"2.3.0":{"name":"@geonosis/observability","version":"2.3.0","keywords":["observability","error-tracking","health-check","posthog","tracing","result","workers"],"license":"Apache-2.0","_id":"@geonosis/observability@2.3.0","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/observability","bin":{"geonosis-observability":"bin/geonosis-observability.mjs"},"dist":{"shasum":"0473ea946db6eddabddf6c01f4e0714ecab4d445","tarball":"https://registry.npmjs.org/@geonosis/observability/-/observability-2.3.0.tgz","fileCount":20,"integrity":"sha512-8rccVgUiAxdtZhYMvRW3tYysQIlKjfYZ3iTdZURYT9rgWjrZ+Icj72nXlV1QstNjTS5aZYgHf8XoJAsQELumDA==","signatures":[{"sig":"MEQCIDIfRjjZaMnG+Av3V1JcN7LcyQLwGd5a89uZ8ydfaJmsAiBdVE1lCskD+yPJQ55UX4JK8N5CN04RkaXZBdd38i57Lg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":146577},"main":"dist/index.cjs","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./health":{"import":{"types":"./dist/health/index.d.ts","default":"./dist/health/index.js"},"require":{"types":"./dist/health/index.d.cts","default":"./dist/health/index.cjs"}},"./posthog":{"import":{"types":"./dist/posthog/index.d.ts","default":"./dist/posthog/index.js"},"require":{"types":"./dist/posthog/index.d.cts","default":"./dist/posthog/index.cjs"}}},"scripts":{"build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bayraak","email":"bayraak@gmail.com"},"repository":{"url":"git+https://github.com/microcompanies/geonosis.git","type":"git","directory":"packages/observability"},"description":"Ports whose answer can say failed: an ErrorSink and a Tracer returning Result, one attribute vocabulary (tenant as a group id, never a person), a memory sink, envelope-id dedupe, a PostHog adapter, a tiered health registry, and a probe that plants an erro","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.0.0","posthog-node":"5.50.0","better-result":"3.0.1"},"peerDependencies":{"zod":"^4.0.0","posthog-node":">=5.49.0","better-result":"^3.0.0"},"peerDependenciesMeta":{"zod":{"optional":true},"posthog-node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/observability_2.3.0_1788419924584_0.4264296629164559","host":"s3://npm-registry-packages-npm-production"}},"2.3.1":{"name":"@geonosis/observability","version":"2.3.1","keywords":["observability","error-tracking","health-check","posthog","tracing","result","workers"],"license":"Apache-2.0","_id":"@geonosis/observability@2.3.1","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/observability","bin":{"geonosis-observability":"bin/geonosis-observability.mjs"},"dist":{"shasum":"7a2a527e5ca9ec639b3302f7415efa3278b8676e","tarball":"https://registry.npmjs.org/@geonosis/observability/-/observability-2.3.1.tgz","fileCount":20,"integrity":"sha512-QM3oDqWuOq7j5mq6FIGmVFLhqVE90b526BfF2SYue2trp3uCgIlWnR+y50KTZLu5rcbU/441cUyZG8MGy9OLvg==","signatures":[{"sig":"MEYCIQCVZJJFHRcYjJoGT2b+lcuzTlWzmQeV2LmlUf7FIWW10gIhAPMLwbOAZqhCT0gUP+I2F/vhz9M59RBhdSOXkqzHNloi","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":146577},"main":"dist/index.cjs","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./health":{"import":{"types":"./dist/health/index.d.ts","default":"./dist/health/index.js"},"require":{"types":"./dist/health/index.d.cts","default":"./dist/health/index.cjs"}},"./posthog":{"import":{"types":"./dist/posthog/index.d.ts","default":"./dist/posthog/index.js"},"require":{"types":"./dist/posthog/index.d.cts","default":"./dist/posthog/index.cjs"}}},"scripts":{"build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bayraak","email":"bayraak@gmail.com"},"repository":{"url":"git+https://github.com/microcompanies/geonosis.git","type":"git","directory":"packages/observability"},"description":"Ports whose answer can say failed: an ErrorSink and a Tracer returning Result, one attribute vocabulary (tenant as a group id, never a person), a memory sink, envelope-id dedupe, a PostHog adapter, a tiered health registry, and a probe that plants an erro","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.0.0","posthog-node":"5.50.0","better-result":"3.0.1"},"peerDependencies":{"zod":"^4.0.0","posthog-node":">=5.49.0","better-result":"^3.0.0"},"peerDependenciesMeta":{"zod":{"optional":true},"posthog-node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/observability_2.3.1_1788435297165_0.07466614903711655","host":"s3://npm-registry-packages-npm-production"}},"2.4.2":{"name":"@geonosis/observability","version":"2.4.2","keywords":["observability","error-tracking","health-check","posthog","tracing","result","workers"],"license":"Apache-2.0","_id":"@geonosis/observability@2.4.2","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/observability","bin":{"geonosis-observability":"bin/geonosis-observability.mjs"},"dist":{"shasum":"9e60cc85745f05851ee972baab56da2cad5ae6b3","tarball":"https://registry.npmjs.org/@geonosis/observability/-/observability-2.4.2.tgz","fileCount":21,"integrity":"sha512-LDl9WMJkniD6QelSAp/vem/KWdx6UPWVITJa3AHCngs2L5t/oCBQsdSiQDkQS1lk6h2A6ccy+xTgDzopT1jF8w==","signatures":[{"sig":"MEQCIEIrMrJ0luOByUIFhGkOYIO9iavqL0KXu2XVBtXUUuDIAiBUp/XAl5xHoVR1Zip+VmLZabHgfavgmMUf2ex436UjoA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":167330},"main":"dist/index.cjs","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./health":{"import":{"types":"./dist/health/index.d.ts","default":"./dist/health/index.js"},"require":{"types":"./dist/health/index.d.cts","default":"./dist/health/index.cjs"}},"./posthog":{"import":{"types":"./dist/posthog/index.d.ts","default":"./dist/posthog/index.js"},"require":{"types":"./dist/posthog/index.d.cts","default":"./dist/posthog/index.cjs"}}},"scripts":{"build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bayraak","email":"bayraak@gmail.com"},"repository":{"url":"git+https://github.com/microcompanies/geonosis.git","type":"git","directory":"packages/observability"},"description":"Ports whose answer can say failed: an ErrorSink and a Tracer returning Result, one attribute vocabulary (tenant as a group id, never a person), a memory sink, envelope-id dedupe, a PostHog adapter, a tiered health registry, and a probe that plants an erro","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.0.0","posthog-node":"5.50.0","better-result":"3.0.1"},"peerDependencies":{"zod":"^4.0.0","posthog-node":">=5.49.0","better-result":"^3.0.0"},"peerDependenciesMeta":{"zod":{"optional":true},"posthog-node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/observability_2.4.2_1788444806941_0.334171869449414","host":"s3://npm-registry-packages-npm-production"}},"2.4.3":{"name":"@geonosis/observability","version":"2.4.3","keywords":["observability","error-tracking","health-check","posthog","tracing","result","workers"],"license":"Apache-2.0","_id":"@geonosis/observability@2.4.3","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/observability","bin":{"geonosis-observability":"bin/geonosis-observability.mjs"},"dist":{"shasum":"17ad980f801adaecf7ad5e40b32f8062c2fae3ef","tarball":"https://registry.npmjs.org/@geonosis/observability/-/observability-2.4.3.tgz","fileCount":21,"integrity":"sha512-GKKYfUZ329DBTOb6iQGxWkQN6osDt/zyRMyRYv8IMX8bt3yW96LRs+ETlNPuAjki2NJiSvk0IdhlqdTDLxreRw==","signatures":[{"sig":"MEUCIC8I7RTdU/Tfhk7+Fd0/eq3Y7J0KTQ0hVzCiflVtKWl+AiEAurwGaG5ZvHM2/wMFh5jwHBTW50m6XMj3hlf5RV4G9CM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":167340},"main":"dist/index.cjs","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./health":{"import":{"types":"./dist/health/index.d.ts","default":"./dist/health/index.js"},"require":{"types":"./dist/health/index.d.cts","default":"./dist/health/index.cjs"}},"./posthog":{"import":{"types":"./dist/posthog/index.d.ts","default":"./dist/posthog/index.js"},"require":{"types":"./dist/posthog/index.d.cts","default":"./dist/posthog/index.cjs"}}},"scripts":{"build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bayraak","email":"bayraak@gmail.com"},"repository":{"url":"git+https://github.com/microcompanies/geonosis.git","type":"git","directory":"packages/observability"},"description":"Ports whose answer can say failed: an ErrorSink and a Tracer returning Result, one attribute vocabulary (tenant as a group id, never a person), a memory sink, envelope-id dedupe, a PostHog adapter, a tiered health registry, and a probe that plants an erro","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.0.0","posthog-node":"5.50.0","better-result":"3.0.1"},"peerDependencies":{"zod":"^4.0.0","posthog-node":">=5.49.0","better-result":"^3.0.0"},"peerDependenciesMeta":{"zod":{"optional":true},"posthog-node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/observability_2.4.3_1788565999771_0.31482185346485503","host":"s3://npm-registry-packages-npm-production"}},"2.5.0":{"name":"@geonosis/observability","version":"2.5.0","keywords":["observability","error-tracking","health-check","posthog","tracing","result","workers"],"license":"Apache-2.0","_id":"@geonosis/observability@2.5.0","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/observability","bin":{"geonosis-observability":"bin/geonosis-observability.mjs"},"dist":{"shasum":"a13209688d3c4bca0b21a4f2aa5f7e63a172fb82","tarball":"https://registry.npmjs.org/@geonosis/observability/-/observability-2.5.0.tgz","fileCount":21,"integrity":"sha512-Www1jjMGtTlJZ647tVAd9J1XBuspLhM0I4SRLmBm6P1B/8P3y9qZVuyb0rC1nJcP13KQ+DPwZgBa9dlUc3fP5w==","signatures":[{"sig":"MEYCIQD8PxW/xt/aYy/SB33Hw6BQjWmn8yu5XIGQVQ0feoINSAIhAMpa6cSHfWUT2J+q0UzfRjFjMaYGjFTMqWr9Z/SOtxX9","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":167350},"main":"dist/index.cjs","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./health":{"import":{"types":"./dist/health/index.d.ts","default":"./dist/health/index.js"},"require":{"types":"./dist/health/index.d.cts","default":"./dist/health/index.cjs"}},"./posthog":{"import":{"types":"./dist/posthog/index.d.ts","default":"./dist/posthog/index.js"},"require":{"types":"./dist/posthog/index.d.cts","default":"./dist/posthog/index.cjs"}}},"scripts":{"build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bayraak","email":"bayraak@gmail.com"},"repository":{"url":"git+https://github.com/microcompanies/geonosis.git","type":"git","directory":"packages/observability"},"description":"Ports whose answer can say failed: an ErrorSink and a Tracer returning Result, one attribute vocabulary (tenant as a group id, never a person), a memory sink, envelope-id dedupe, a PostHog adapter, a tiered health registry, and a probe that plants an erro","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.0.0","posthog-node":"5.50.0","better-result":"3.0.1"},"peerDependencies":{"zod":"^4.0.0","posthog-node":">=5.49.0","better-result":"^3.0.0"},"peerDependenciesMeta":{"zod":{"optional":true},"posthog-node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/observability_2.5.0_1788595391540_0.1089418884437352","host":"s3://npm-registry-packages-npm-production"}},"2.5.1":{"name":"@geonosis/observability","version":"2.5.1","keywords":["observability","error-tracking","health-check","posthog","tracing","result","workers"],"license":"Apache-2.0","_id":"@geonosis/observability@2.5.1","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/observability","bin":{"geonosis-observability":"bin/geonosis-observability.mjs"},"dist":{"shasum":"01af6ee8efe743c337a87078ccb4f1b1c3a1f9bf","tarball":"https://registry.npmjs.org/@geonosis/observability/-/observability-2.5.1.tgz","fileCount":21,"integrity":"sha512-+/+r6qfwsc20jnPdwTKGYy9JfhWrDDhsvKLtrIP4hbENZZusxqLH/e64iIIOi7b0hqAZ0KIdIoNsU0E/+OIacg==","signatures":[{"sig":"MEYCIQDlq9YTqX4fLlV4nnrg2S3k39sLkuRJIF4tfGlu+HB5yQIhAO6plFC/s3qe9hbUZ8Ln3Y1Yn/6EmMrxYcfHFr3PW/Lc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":167716},"main":"dist/index.cjs","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./health":{"import":{"types":"./dist/health/index.d.ts","default":"./dist/health/index.js"},"require":{"types":"./dist/health/index.d.cts","default":"./dist/health/index.cjs"}},"./posthog":{"import":{"types":"./dist/posthog/index.d.ts","default":"./dist/posthog/index.js"},"require":{"types":"./dist/posthog/index.d.cts","default":"./dist/posthog/index.cjs"}}},"scripts":{"build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bayraak","email":"bayraak@gmail.com"},"repository":{"url":"git+https://github.com/microcompanies/geonosis.git","type":"git","directory":"packages/observability"},"description":"Ports whose answer can say failed: an ErrorSink and a Tracer returning Result, one attribute vocabulary (tenant as a group id, never a person), a memory sink, envelope-id dedupe, a PostHog adapter, a tiered health registry, and a probe that plants an erro","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.0.0","posthog-node":"5.50.0","better-result":"3.0.1"},"peerDependencies":{"zod":"^4.0.0","posthog-node":">=5.49.0","better-result":"^3.0.0"},"peerDependenciesMeta":{"zod":{"optional":true},"posthog-node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/observability_2.5.1_1788685753560_0.11635894164584393","host":"s3://npm-registry-packages-npm-production"}},"2.5.2":{"name":"@geonosis/observability","version":"2.5.2","keywords":["observability","error-tracking","health-check","posthog","tracing","result","workers"],"license":"Apache-2.0","_id":"@geonosis/observability@2.5.2","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/observability","bin":{"geonosis-observability":"bin/geonosis-observability.mjs"},"dist":{"shasum":"13cafb628b0850d11395d7d0406ec34a510f4d6b","tarball":"https://registry.npmjs.org/@geonosis/observability/-/observability-2.5.2.tgz","fileCount":21,"integrity":"sha512-pRkRR/TevHivU1qq7bryvdrnAnW35LdnY6SW3hRgrFAKescZlmIE4SvOqZzARBvUY3pnLywPegPVpu3jzm17Bg==","signatures":[{"sig":"MEYCIQDe2GQZ3zkqV1gnvmnhac+yzrsaInlC2rWUlxW6eLUvNAIhAJ+ebgKosKf+KS+qG4cvNSG/oI7pmis3MWhYBWeroa7w","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":167726},"main":"dist/index.cjs","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./health":{"import":{"types":"./dist/health/index.d.ts","default":"./dist/health/index.js"},"require":{"types":"./dist/health/index.d.cts","default":"./dist/health/index.cjs"}},"./posthog":{"import":{"types":"./dist/posthog/index.d.ts","default":"./dist/posthog/index.js"},"require":{"types":"./dist/posthog/index.d.cts","default":"./dist/posthog/index.cjs"}}},"scripts":{"build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bayraak","email":"bayraak@gmail.com"},"repository":{"url":"git+https://github.com/microcompanies/geonosis.git","type":"git","directory":"packages/observability"},"description":"Ports whose answer can say failed: an ErrorSink and a Tracer returning Result, one attribute vocabulary (tenant as a group id, never a person), a memory sink, envelope-id dedupe, a PostHog adapter, a tiered health registry, and a probe that plants an erro","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.0.0","posthog-node":"5.50.0","better-result":"3.0.1"},"peerDependencies":{"zod":"^4.0.0","posthog-node":">=5.49.0","better-result":"^3.0.0"},"peerDependenciesMeta":{"zod":{"optional":true},"posthog-node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/observability_2.5.2_1788701273453_0.994624864709289","host":"s3://npm-registry-packages-npm-production"}},"2.5.3":{"name":"@geonosis/observability","version":"2.5.3","keywords":["observability","error-tracking","health-check","posthog","tracing","result","workers"],"license":"Apache-2.0","_id":"@geonosis/observability@2.5.3","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/observability","bin":{"geonosis-observability":"bin/geonosis-observability.mjs"},"dist":{"shasum":"b8ee9aebf34b3b5e8dc4a18b5b628c7a7b36b5f4","tarball":"https://registry.npmjs.org/@geonosis/observability/-/observability-2.5.3.tgz","fileCount":21,"integrity":"sha512-pANbXUI6bk6Zp+x8BwJ0aOM5UFY819uQOOZYwtyHRhaXCCy9hed0QZ9xEmc0pCMk5CKhkSABhTW2LdIWEl2dlQ==","signatures":[{"sig":"MEYCIQDbjFHY/exc2zg3Ju8R9RS1cEuxonaTxaSseQ/hSD3SgAIhAIkvDbmdhIVSfVqLGif4AE0UXMGI6pLne+8bQdZ0x6qC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":167736},"main":"dist/index.cjs","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./health":{"import":{"types":"./dist/health/index.d.ts","default":"./dist/health/index.js"},"require":{"types":"./dist/health/index.d.cts","default":"./dist/health/index.cjs"}},"./posthog":{"import":{"types":"./dist/posthog/index.d.ts","default":"./dist/posthog/index.js"},"require":{"types":"./dist/posthog/index.d.cts","default":"./dist/posthog/index.cjs"}}},"scripts":{"build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bayraak","email":"bayraak@gmail.com"},"repository":{"url":"git+https://github.com/microcompanies/geonosis.git","type":"git","directory":"packages/observability"},"description":"Ports whose answer can say failed: an ErrorSink and a Tracer returning Result, one attribute vocabulary (tenant as a group id, never a person), a memory sink, envelope-id dedupe, a PostHog adapter, a tiered health registry, and a probe that plants an erro","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.0.0","posthog-node":"5.50.0","better-result":"3.0.1"},"peerDependencies":{"zod":"^4.0.0","posthog-node":">=5.49.0","better-result":"^3.0.0"},"peerDependenciesMeta":{"zod":{"optional":true},"posthog-node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/observability_2.5.3_1788712648309_0.7133708857457008","host":"s3://npm-registry-packages-npm-production"}},"2.6.0":{"name":"@geonosis/observability","version":"2.6.0","keywords":["observability","error-tracking","health-check","posthog","tracing","result","workers"],"license":"Apache-2.0","_id":"@geonosis/observability@2.6.0","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/observability","bin":{"geonosis-observability":"bin/geonosis-observability.mjs"},"dist":{"shasum":"af9bda4d3f9ea8893831e0d16268c02e4b4bc7b4","tarball":"https://registry.npmjs.org/@geonosis/observability/-/observability-2.6.0.tgz","fileCount":21,"integrity":"sha512-5skAASi/QVTlS9UoeLd7d3UtquLYZlVSIs2rMR7Xkxv47x8XhGNF5h9HNQt6Tdr8vUKE08E6J8oOdSSoFvYqVQ==","signatures":[{"sig":"MEUCICj7kNy3NI+rQfU37izcd61RFqmMrWCF3tpQptYnpJpIAiEA8DeN+szBGvwqLD23A78oEx80pnEy7uMc/jEOzPVOiyY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":168056},"main":"dist/index.cjs","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./health":{"import":{"types":"./dist/health/index.d.ts","default":"./dist/health/index.js"},"require":{"types":"./dist/health/index.d.cts","default":"./dist/health/index.cjs"}},"./posthog":{"import":{"types":"./dist/posthog/index.d.ts","default":"./dist/posthog/index.js"},"require":{"types":"./dist/posthog/index.d.cts","default":"./dist/posthog/index.cjs"}}},"scripts":{"lint":"oxlint --config ../../.oxlintrc.json .","build":"tsup","test:bin":"vitest run --project bin --root ../.. --passWithNoTests \"$PWD\"","test:exam":"vitest run --project exam --root ../.. --passWithNoTests \"$PWD\"","test:unit":"vitest run --project unit --root ../.. --passWithNoTests \"$PWD\"","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bayraak","email":"bayraak@gmail.com"},"repository":{"url":"git+https://github.com/microcompanies/geonosis.git","type":"git","directory":"packages/observability"},"description":"Ports whose answer can say failed: an ErrorSink and a Tracer returning Result, one attribute vocabulary (tenant as a group id, never a person), a memory sink, envelope-id dedupe, a PostHog adapter, a tiered health registry, and a probe that plants an erro","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.0.0","posthog-node":"5.50.0","better-result":"3.0.1"},"peerDependencies":{"zod":"^4.0.0","posthog-node":">=5.49.0","better-result":"^3.0.0"},"peerDependenciesMeta":{"zod":{"optional":true},"posthog-node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/observability_2.6.0_1788776151219_0.15558799466922935","host":"s3://npm-registry-packages-npm-production"}},"2.6.1":{"name":"@geonosis/observability","version":"2.6.1","keywords":["observability","error-tracking","health-check","posthog","tracing","result","workers"],"license":"Apache-2.0","_id":"@geonosis/observability@2.6.1","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/observability","bin":{"geonosis-observability":"bin/geonosis-observability.mjs"},"dist":{"shasum":"28f13182afea9fa440ce373290c5274ce0dbe477","tarball":"https://registry.npmjs.org/@geonosis/observability/-/observability-2.6.1.tgz","fileCount":21,"integrity":"sha512-7j0ED0KAkqc5xZjud+3HlksInaN7tTtqe9W7tDU6zV0/FaPWQmKx0LnnsESCIP8gyKRb6CIxO7e7VQoxEvGQpg==","signatures":[{"sig":"MEUCIQDfCSSeR9p7vW+yDix5q8/lt5gH0KXsG6lheE1CxZuDrgIgRcuTREhGRLxsQZaoruNM6519WR1hqvV5Qwlpc91xa0Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":168066},"main":"dist/index.cjs","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./health":{"import":{"types":"./dist/health/index.d.ts","default":"./dist/health/index.js"},"require":{"types":"./dist/health/index.d.cts","default":"./dist/health/index.cjs"}},"./posthog":{"import":{"types":"./dist/posthog/index.d.ts","default":"./dist/posthog/index.js"},"require":{"types":"./dist/posthog/index.d.cts","default":"./dist/posthog/index.cjs"}}},"scripts":{"lint":"oxlint --config ../../.oxlintrc.json .","build":"tsup","test:bin":"vitest run --project bin --root ../.. --passWithNoTests \"$PWD\"","test:exam":"vitest run --project exam --root ../.. --passWithNoTests \"$PWD\"","test:unit":"vitest run --project unit --root ../.. --passWithNoTests \"$PWD\"","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bayraak","email":"bayraak@gmail.com"},"repository":{"url":"git+https://github.com/microcompanies/geonosis.git","type":"git","directory":"packages/observability"},"description":"Ports whose answer can say failed: an ErrorSink and a Tracer returning Result, one attribute vocabulary (tenant as a group id, never a person), a memory sink, envelope-id dedupe, a PostHog adapter, a tiered health registry, and a probe that plants an erro","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.0.0","posthog-node":"5.50.0","better-result":"3.0.1"},"peerDependencies":{"zod":"^4.0.0","posthog-node":">=5.49.0","better-result":"^3.0.0"},"peerDependenciesMeta":{"zod":{"optional":true},"posthog-node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/observability_2.6.1_1788803815227_0.9942892987110106","host":"s3://npm-registry-packages-npm-production"}},"2.7.0":{"name":"@geonosis/observability","version":"2.7.0","keywords":["observability","error-tracking","health-check","posthog","tracing","result","workers"],"license":"Apache-2.0","_id":"@geonosis/observability@2.7.0","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/observability","bin":{"geonosis-observability":"bin/geonosis-observability.mjs"},"dist":{"shasum":"99bdce69ba8d33c41728df0342028107364e5b7e","tarball":"https://registry.npmjs.org/@geonosis/observability/-/observability-2.7.0.tgz","fileCount":21,"integrity":"sha512-PPBSLvpPfAvTR54bBrZI62DPSa3Pl2MXeRbpHBG+wz78O4pn1byUoHBSkJPYZti6hIQ61QQrk7Gs0Tbg3AvKmg==","signatures":[{"sig":"MEUCIQDTN4QRBN281qw7vEBWwwCrcgynZqaAqJ39f6wOctFjcQIgDQnkGsVs9IwYs1tzVubJSQc0D2eDT6uDEE9L/eq1kGo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDl+EXWWVZs0zm3/gX4Pgjj2iB4NKlXLj+N+5Mnfftq6QIgEAYMJwTV2I3xASqpq+Or0Jfm9iOV8zZIVSrsaA8O70Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":168076},"main":"dist/index.cjs","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./health":{"import":{"types":"./dist/health/index.d.ts","default":"./dist/health/index.js"},"require":{"types":"./dist/health/index.d.cts","default":"./dist/health/index.cjs"}},"./posthog":{"import":{"types":"./dist/posthog/index.d.ts","default":"./dist/posthog/index.js"},"require":{"types":"./dist/posthog/index.d.cts","default":"./dist/posthog/index.cjs"}}},"scripts":{"lint":"oxlint --config ../../.oxlintrc.json .","build":"tsup","test:bin":"vitest run --project bin --root ../.. --passWithNoTests \"$PWD\"","test:exam":"vitest run --project exam --root ../.. --passWithNoTests \"$PWD\"","test:unit":"vitest run --project unit --root ../.. --passWithNoTests \"$PWD\"","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bayraak","email":"bayraak@gmail.com"},"repository":{"url":"git+https://github.com/microcompanies/geonosis.git","type":"git","directory":"packages/observability"},"description":"Ports whose answer can say failed: an ErrorSink and a Tracer returning Result, one attribute vocabulary (tenant as a group id, never a person), a memory sink, envelope-id dedupe, a PostHog adapter, a tiered health registry, and a probe that plants an erro","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.0.0","posthog-node":"5.50.0","better-result":"3.0.1"},"peerDependencies":{"zod":"^4.0.0","posthog-node":">=5.49.0","better-result":"^3.0.0"},"peerDependenciesMeta":{"zod":{"optional":true},"posthog-node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/observability_2.7.0_1789209480833_0.8002144311018518","host":"s3://npm-registry-packages-npm-production"}},"2.8.0":{"name":"@geonosis/observability","version":"2.8.0","keywords":["observability","error-tracking","health-check","posthog","tracing","result","workers"],"license":"Apache-2.0","_id":"@geonosis/observability@2.8.0","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/observability","bin":{"geonosis-observability":"bin/geonosis-observability.mjs"},"dist":{"shasum":"cb87caffbdd9c90a281c6bb89827493b1afca362","tarball":"https://registry.npmjs.org/@geonosis/observability/-/observability-2.8.0.tgz","fileCount":21,"integrity":"sha512-bZxesba7sdGGjCrDg5FRH1TV8CbteI7geHCNeMTcvgrO+1PzSzOERzeoGuTVNEkSM+HbQmY+iU66k1bVHOAwlg==","signatures":[{"sig":"MEQCICVznFj5CbPAupuC4Bm1Ih66Qai0UD2X/m5ZSWK5iPK5AiAWP65MkNpeOw4CIEV/DJDE2HcTaYF6DwXNVPj8Ye0QYg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIEBY1jj4dR4LTapWdwCV0vAg3Scpaf7FzdT4Ani+jHVuAiA/YU6N+efOesGgC0SSFDAb9S7wYYgiF3GJgMsSVQZagw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":168078},"main":"dist/index.cjs","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./health":{"import":{"types":"./dist/health/index.d.ts","default":"./dist/health/index.js"},"require":{"types":"./dist/health/index.d.cts","default":"./dist/health/index.cjs"}},"./posthog":{"import":{"types":"./dist/posthog/index.d.ts","default":"./dist/posthog/index.js"},"require":{"types":"./dist/posthog/index.d.cts","default":"./dist/posthog/index.cjs"}}},"scripts":{"lint":"oxlint --config ../../.oxlintrc.json .","build":"tsup","test:bin":"vitest run --project bin --root ../.. --passWithNoTests \"$PWD\"","test:exam":"vitest run --project exam --root ../.. --passWithNoTests \"$PWD\"","test:unit":"vitest run --project unit --root ../.. --passWithNoTests \"$PWD\"","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bayraak","email":"bayraak@gmail.com"},"repository":{"url":"git+https://github.com/microcompanies/geonosis.git","type":"git","directory":"packages/observability"},"description":"Ports whose answer can say failed: an ErrorSink and a Tracer returning Result, one attribute vocabulary (tenant as a group id, never a person), a memory sink, envelope-id dedupe, a PostHog adapter, a tiered health registry, and a probe that plants an erro","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.0.0","posthog-node":"5.50.0","better-result":"3.0.1"},"peerDependencies":{"zod":"^4.0.0","posthog-node":">=5.49.0","better-result":"^3.0.0"},"peerDependenciesMeta":{"zod":{"optional":true},"posthog-node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/observability_2.8.0_1789421432676_0.8465437938944418","host":"s3://npm-registry-packages-npm-production"}},"2.9.0":{"name":"@geonosis/observability","version":"2.9.0","keywords":["observability","error-tracking","health-check","posthog","tracing","result","workers"],"license":"Apache-2.0","_id":"@geonosis/observability@2.9.0","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/observability","bin":{"geonosis-observability":"bin/geonosis-observability.mjs"},"dist":{"shasum":"9c602c789fc078f9e4baf0d2e4788813677cd193","tarball":"https://registry.npmjs.org/@geonosis/observability/-/observability-2.9.0.tgz","fileCount":21,"integrity":"sha512-ZiKPEG+ZTZgc9YljoEalqnBXGTSbhvYo5hr+U5V+Ezd51FQ0xH5SDYiFaNp+fIvceyU7D4xD69BiFnYgmcql6A==","signatures":[{"sig":"MEQCIGmGZkBKkLV939J7NbWgzn68UIE6Ejf6yF0JDekRpnCxAiBCbk7z4/7ye7/CtvChSbs7dWuaerIiMCqMXmuKu3+UPw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIBCDi7/dzXaKKWm8M1kQ2taW2BDM74lL7LdZCoCeENnfAiEAhplfhl61yuVWfB7iLbo1WecbzVqwNdK184Whx9iR++4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":168088},"main":"dist/index.cjs","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./health":{"import":{"types":"./dist/health/index.d.ts","default":"./dist/health/index.js"},"require":{"types":"./dist/health/index.d.cts","default":"./dist/health/index.cjs"}},"./posthog":{"import":{"types":"./dist/posthog/index.d.ts","default":"./dist/posthog/index.js"},"require":{"types":"./dist/posthog/index.d.cts","default":"./dist/posthog/index.cjs"}}},"scripts":{"lint":"oxlint --config ../../.oxlintrc.json .","build":"tsup","test:bin":"vitest run --project bin --root ../.. --passWithNoTests \"$PWD\"","test:exam":"vitest run --project exam --root ../.. --passWithNoTests \"$PWD\"","test:unit":"vitest run --project unit --root ../.. --passWithNoTests \"$PWD\"","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bayraak","email":"bayraak@gmail.com"},"repository":{"url":"git+https://github.com/microcompanies/geonosis.git","type":"git","directory":"packages/observability"},"description":"Ports whose answer can say failed: an ErrorSink and a Tracer returning Result, one attribute vocabulary (tenant as a group id, never a person), a memory sink, envelope-id dedupe, a PostHog adapter, a tiered health registry, and a probe that plants an erro","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.0.0","posthog-node":"5.50.0","better-result":"3.0.1"},"peerDependencies":{"zod":"^4.0.0","posthog-node":">=5.49.0","better-result":"^3.0.0"},"peerDependenciesMeta":{"zod":{"optional":true},"posthog-node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/observability_2.9.0_1789468497880_0.5363655927555289","host":"s3://npm-registry-packages-npm-production"}},"2.10.0":{"name":"@geonosis/observability","version":"2.10.0","keywords":["observability","error-tracking","health-check","posthog","tracing","result","workers"],"license":"Apache-2.0","_id":"@geonosis/observability@2.10.0","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/observability","bin":{"geonosis-observability":"bin/geonosis-observability.mjs"},"dist":{"shasum":"3f3424a304b34f0262382ceb3fa8ffe047d430a0","tarball":"https://registry.npmjs.org/@geonosis/observability/-/observability-2.10.0.tgz","fileCount":21,"integrity":"sha512-GjSButxl95W0h+Zf2o3lsfUkKCz9s9kkPs7FJsRHEqHu59yVY5mk0eqUfCm72nxG+wQEx9FBvDW8thM9t0/CMg==","signatures":[{"sig":"MEYCIQD4AH6ySJOuAUr75dfkt+dX9T6c7vxFX1fnnelxWqY2RAIhAL5pPJiMfvv0QhUnSdGD0jY8RlUKFrT0YlC55nSxp8jO","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDY4a79Wle6OiHvXDLdz8i6ZWvL5Azoau1VA4OX59AK/QIgaaAf2LX6QbozuhnwQS4eU6jYa2uwZ8P7ltut8ITp5qQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":168100},"main":"dist/index.cjs","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./health":{"import":{"types":"./dist/health/index.d.ts","default":"./dist/health/index.js"},"require":{"types":"./dist/health/index.d.cts","default":"./dist/health/index.cjs"}},"./posthog":{"import":{"types":"./dist/posthog/index.d.ts","default":"./dist/posthog/index.js"},"require":{"types":"./dist/posthog/index.d.cts","default":"./dist/posthog/index.cjs"}}},"scripts":{"lint":"oxlint --config ../../.oxlintrc.json .","build":"tsup","test:bin":"vitest run --project bin --root ../.. --passWithNoTests \"$PWD\"","test:exam":"vitest run --project exam --root ../.. --passWithNoTests \"$PWD\"","test:unit":"vitest run --project unit --root ../.. --passWithNoTests \"$PWD\"","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bayraak","email":"bayraak@gmail.com"},"repository":{"url":"git+https://github.com/microcompanies/geonosis.git","type":"git","directory":"packages/observability"},"description":"Ports whose answer can say failed: an ErrorSink and a Tracer returning Result, one attribute vocabulary (tenant as a group id, never a person), a memory sink, envelope-id dedupe, a PostHog adapter, a tiered health registry, and a probe that plants an erro","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.0.0","posthog-node":"5.50.0","better-result":"3.0.1"},"peerDependencies":{"zod":"^4.0.0","posthog-node":">=5.49.0","better-result":"^3.0.0"},"peerDependenciesMeta":{"zod":{"optional":true},"posthog-node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/observability_2.10.0_1789489817895_0.22419705956159586","host":"s3://npm-registry-packages-npm-production"}},"2.11.0":{"name":"@geonosis/observability","version":"2.11.0","keywords":["observability","error-tracking","health-check","posthog","tracing","result","workers"],"license":"Apache-2.0","_id":"@geonosis/observability@2.11.0","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/observability","bin":{"geonosis-observability":"bin/geonosis-observability.mjs"},"dist":{"shasum":"de6fe986a1a281fd8da3863a15b1a8cad5172720","tarball":"https://registry.npmjs.org/@geonosis/observability/-/observability-2.11.0.tgz","fileCount":21,"integrity":"sha512-aTp2dqmeRu4nZpdR+Ofwclw1eRugF6cejYeU8Q3s2XQpSKwoe56Aomsl3JRhnTZfKMUGiBR2CBLet9iwwTIS2A==","signatures":[{"sig":"MEUCIQC83PQ4gRnIpTaNnvEPzv9WfqRMYTnX8ioWZc5JDhRhfQIgLZCxRrbAKhPRdGcTTsRa0ct1+ZFWDXz9ooJXCdnjL44=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIA74U50B5TC6Sy+yWQuueDbe8v5AqUzfTaMJynWlZXHoAiEA0nxiuBb04I0qXtsz1g3fq85WM4yypm2N09HtzIO16To=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":180273},"main":"dist/index.cjs","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./health":{"import":{"types":"./dist/health/index.d.ts","default":"./dist/health/index.js"},"require":{"types":"./dist/health/index.d.cts","default":"./dist/health/index.cjs"}},"./posthog":{"import":{"types":"./dist/posthog/index.d.ts","default":"./dist/posthog/index.js"},"require":{"types":"./dist/posthog/index.d.cts","default":"./dist/posthog/index.cjs"}}},"scripts":{"lint":"oxlint --config ../../.oxlintrc.json .","build":"tsx ../../tooling/build-step.ts tsup","test:bin":"vitest run --project bin --root ../.. --passWithNoTests \"$PWD\"","test:exam":"vitest run --project exam --root ../.. --passWithNoTests \"$PWD\"","test:unit":"vitest run --project unit --root ../.. --passWithNoTests \"$PWD\"","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bayraak","email":"bayraak@gmail.com"},"repository":{"url":"git+https://github.com/microcompanies/geonosis.git","type":"git","directory":"packages/observability"},"description":"Ports whose answer can say failed: an ErrorSink and a Tracer returning Result, one attribute vocabulary (tenant as a group id, never a person), a memory sink, envelope-id dedupe, a PostHog adapter, a tiered health registry, and a probe that plants an erro","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.0.0","posthog-node":"5.50.0","better-result":"3.0.1"},"peerDependencies":{"zod":"^4.0.0","posthog-node":">=5.49.0","better-result":"^3.0.0"},"peerDependenciesMeta":{"zod":{"optional":true},"posthog-node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/observability_2.11.0_1790271779403_0.03394028865453835","host":"s3://npm-registry-packages-npm-production"}},"2.11.1":{"name":"@geonosis/observability","version":"2.11.1","keywords":["observability","error-tracking","health-check","posthog","tracing","result","workers"],"license":"Apache-2.0","_id":"@geonosis/observability@2.11.1","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/observability","bin":{"geonosis-observability":"bin/geonosis-observability.mjs"},"dist":{"shasum":"7d86cb3b6070f677b237e05dfc0c74d5d20b45fa","tarball":"https://registry.npmjs.org/@geonosis/observability/-/observability-2.11.1.tgz","fileCount":21,"integrity":"sha512-xEoHtMNe1bfl89jAX9/Yfwg5DPWAsEjtVakFpHTdUl1pjjFLHdms/Nhdgf0NRfgde6I/yKH8eFQMj09IhvrZzw==","signatures":[{"sig":"MEQCIBtbY+ArWU/6FLrDtHelwaURnT/TETxsSOCVvVMj2ymgAiBHAlEHFUJrsCrTrO1Uz0vTt1jI4EcUxMbs5C9GrCQrCw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDzJnZFSJcnmulGmXPWM5sSaTZnIitJPcF3hIGvc/K/QAIgBulbSbJg4TJ0pfoslgrDl6XC2dg//mFFqCsTtFahkS4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":180818},"main":"dist/index.cjs","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./health":{"import":{"types":"./dist/health/index.d.ts","default":"./dist/health/index.js"},"require":{"types":"./dist/health/index.d.cts","default":"./dist/health/index.cjs"}},"./posthog":{"import":{"types":"./dist/posthog/index.d.ts","default":"./dist/posthog/index.js"},"require":{"types":"./dist/posthog/index.d.cts","default":"./dist/posthog/index.cjs"}}},"scripts":{"lint":"oxlint --config ../../.oxlintrc.json .","build":"tsx ../../tooling/build-step.ts tsup","test:bin":"vitest run --project bin --root ../.. --passWithNoTests \"$PWD\"","test:exam":"vitest run --project exam --root ../.. --passWithNoTests \"$PWD\"","test:unit":"vitest run --project unit --root ../.. --passWithNoTests \"$PWD\"","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bayraak","email":"bayraak@gmail.com"},"repository":{"url":"git+https://github.com/microcompanies/geonosis.git","type":"git","directory":"packages/observability"},"description":"Ports whose answer can say failed: an ErrorSink and a Tracer returning Result, one attribute vocabulary (tenant as a group id, never a person), a memory sink, envelope-id dedupe, a PostHog adapter, a tiered health registry, and a probe that plants an erro","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.0.0","posthog-node":"5.50.0","better-result":"3.0.1"},"peerDependencies":{"zod":"^4.0.0","posthog-node":">=5.49.0","better-result":"^3.0.0"},"peerDependenciesMeta":{"zod":{"optional":true},"posthog-node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/observability_2.11.1_1790351187581_0.8312841844000527","host":"s3://npm-registry-packages-npm-production"}},"2.12.0":{"name":"@geonosis/observability","version":"2.12.0","keywords":["observability","error-tracking","health-check","posthog","tracing","result","workers"],"license":"Apache-2.0","_id":"@geonosis/observability@2.12.0","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/observability","bin":{"geonosis-observability":"bin/geonosis-observability.mjs"},"dist":{"shasum":"9249326d9a882f53f870fc69f145ec3b5b14df4e","tarball":"https://registry.npmjs.org/@geonosis/observability/-/observability-2.12.0.tgz","fileCount":21,"integrity":"sha512-Wrhcad5gWxPUxZe6BGkhwHrISTkHfHj3crrb7rg3fHtnENr8QKC0mHYGWF9HlquMMWUpvf76oQVZBE1wQpcR/g==","signatures":[{"sig":"MEUCIQDuQmK/tPQ4L/2rClezkYVVN3dC7ypw4L11K+drtymsIwIgZuNtilVjKN6qQt+SC8N9WvzSOeb37JKLtrhpRx5oVAA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDmNRXT51swoC6p5C5VDOarcVhxmqFr84jfjuJMK047EgIhAPCbgM6CJsGak7g9VrKnSd/tQW4SvSvXltxKcWwDzjfP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":180829},"main":"dist/index.cjs","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./health":{"import":{"types":"./dist/health/index.d.ts","default":"./dist/health/index.js"},"require":{"types":"./dist/health/index.d.cts","default":"./dist/health/index.cjs"}},"./posthog":{"import":{"types":"./dist/posthog/index.d.ts","default":"./dist/posthog/index.js"},"require":{"types":"./dist/posthog/index.d.cts","default":"./dist/posthog/index.cjs"}}},"scripts":{"lint":"oxlint --config ../../.oxlintrc.json .","build":"tsx ../../tooling/build-step.ts tsup","test:bin":"vitest run --project bin --root ../.. --passWithNoTests \"$PWD\"","test:exam":"vitest run --project exam --root ../.. --passWithNoTests \"$PWD\"","test:unit":"vitest run --project unit --root ../.. --passWithNoTests \"$PWD\"","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bayraak","email":"bayraak@gmail.com"},"repository":{"url":"git+https://github.com/microcompanies/geonosis.git","type":"git","directory":"packages/observability"},"description":"Ports whose answer can say failed: an ErrorSink and a Tracer returning Result, one attribute vocabulary (tenant as a group id, never a person), a memory sink, envelope-id dedupe, a PostHog adapter, a tiered health registry, and a probe that plants an erro","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.0.0","posthog-node":"5.50.0","better-result":"3.0.1"},"peerDependencies":{"zod":"^4.0.0","posthog-node":">=5.49.0","better-result":"^3.0.0"},"peerDependenciesMeta":{"zod":{"optional":true},"posthog-node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/observability_2.12.0_1790356299472_0.2623045846734058","host":"s3://npm-registry-packages-npm-production"}},"2.13.0":{"name":"@geonosis/observability","version":"2.13.0","keywords":["observability","error-tracking","health-check","posthog","tracing","result","workers"],"license":"Apache-2.0","_id":"@geonosis/observability@2.13.0","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/observability","bin":{"geonosis-observability":"bin/geonosis-observability.mjs"},"dist":{"shasum":"e53e9f4b9e012a77ee6511e4df92ba1e6d04f097","tarball":"https://registry.npmjs.org/@geonosis/observability/-/observability-2.13.0.tgz","fileCount":21,"integrity":"sha512-KQ8NCH7BEMU+Bb7Gb8IUy5Zgeiu7USkeT5VzfzKqWpiOKN1J3ayktvG35Em2BCWiGMV8GHtizQ8nkvyWh0ohIg==","signatures":[{"sig":"MEUCIA2uOO74i6UXWSbIyHB9MxIJpQ2Zcm5qnLLCYLcn3EmQAiEAiJwauBwsuGLBa2wstpHGBW1qdQrOzlaVI7k60IXSRDs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCymKnBecYtAfrB40lKhs422aMk0hCzKHahYMvWUdI54QIgI530MtZQBvTcysNcvpDYA1sc4g8PCPAnyDkWuKRlFiQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":172178},"main":"dist/index.cjs","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./health":{"import":{"types":"./dist/health/index.d.ts","default":"./dist/health/index.js"},"require":{"types":"./dist/health/index.d.cts","default":"./dist/health/index.cjs"}},"./posthog":{"import":{"types":"./dist/posthog/index.d.ts","default":"./dist/posthog/index.js"},"require":{"types":"./dist/posthog/index.d.cts","default":"./dist/posthog/index.cjs"}}},"scripts":{"lint":"oxlint --config ../../.oxlintrc.json .","build":"tsx ../../tooling/build-step.ts tsup","test:bin":"vitest run --project bin --root ../.. --passWithNoTests \"$PWD\"","test:exam":"vitest run --project exam --root ../.. --passWithNoTests \"$PWD\"","test:unit":"vitest run --project unit --root ../.. --passWithNoTests \"$PWD\"","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bayraak","email":"bayraak@gmail.com"},"repository":{"url":"git+https://github.com/microcompanies/geonosis.git","type":"git","directory":"packages/observability"},"description":"Ports whose answer can say failed: an ErrorSink and a Tracer returning Result, one attribute vocabulary (tenant as a group id, never a person), a memory sink, envelope-id dedupe, a PostHog adapter, a tiered health registry, and a probe that plants an erro","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.0.0","posthog-node":"5.50.0","better-result":"3.0.1"},"peerDependencies":{"zod":"^4.0.0","posthog-node":">=5.49.0","better-result":"^3.0.0"},"peerDependenciesMeta":{"zod":{"optional":true},"posthog-node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/observability_2.13.0_1790432598343_0.8182889280144479","host":"s3://npm-registry-packages-npm-production"}},"3.0.0":{"_id":"@geonosis/observability@3.0.0","bin":{"geonosis-observability":"bin/geonosis-observability.mjs"},"dist":{"shasum":"0e0e14970a815379d15beaf93ac209d660fa483c","tarball":"https://registry.npmjs.org/@geonosis/observability/-/observability-3.0.0.tgz","fileCount":56,"integrity":"sha512-D/2sbzwKhhbWn9Q8Q9Ilgu3Th1lGwuSi6w6vVEPXByhvBAwpvr9fAAY5yG73ylFlzKEV1GdHk0T0ZaVj5ZrmKg==","signatures":[{"sig":"MEUCIQCeGk+6jttBfOFUuHHq2oW3+rbawUmYh5sCkPB/HK1pTgIgQcJbEat9NT1WrtPH1/JJfYEb9KhSD4K2CzLdNrm1b7I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDvy5SnxIdDLPqHv/DsqlSa84gesDlBbrSZRRCrb4HP7QIgbzPbNHL8G4yxhlfnuUNVU3VT2rTf5dkRNRUqb8THmPc="}],"unpackedSize":172763},"main":"dist/index.cjs","name":"@geonosis/observability","type":"module","types":"./dist/index.d.ts","engines":{"bun":"^1.4.2","node":">=22"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./health":{"import":{"types":"./dist/health/index.d.ts","default":"./dist/health/index.js"},"require":{"types":"./dist/health/index.d.cts","default":"./dist/health/index.cjs"}},"./posthog":{"import":{"types":"./dist/posthog/index.d.ts","default":"./dist/posthog/index.js"},"require":{"types":"./dist/posthog/index.d.cts","default":"./dist/posthog/index.cjs"}}},"license":"Apache-2.0","scripts":{"lint":"oxlint --config ../../.oxlintrc.json .","build":"bun ../../tooling/build-step.ts bun ../../tooling/bundle.ts","test:bin":"vitest run --project bin --root ../.. --passWithNoTests \"$PWD\"","test:exam":"vitest run --project exam --root ../.. --passWithNoTests \"$PWD\"","test:unit":"vitest run --project unit --root ../.. --passWithNoTests \"$PWD\"","typecheck":"tsc --noEmit"},"version":"3.0.0","_npmUser":{"name":"bayraak","email":"bayraak@gmail.com"},"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/observability","keywords":["observability","error-tracking","health-check","posthog","tracing","result","workers"],"repository":{"url":"git+https://github.com/microcompanies/geonosis.git","type":"git","directory":"packages/observability"},"description":"Ports whose answer can say failed: an ErrorSink and a Tracer returning Result, one attribute vocabulary (tenant as a group id, never a person), a memory sink, envelope-id dedupe, a PostHog adapter, a tiered health registry, and a probe that plants an erro","directories":{},"maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.6.5","posthog-node":"5.54.1","better-result":"3.0.1"},"peerDependencies":{"zod":"^4.0.0","posthog-node":">=5.49.0","better-result":"^3.0.0"},"peerDependenciesMeta":{"zod":{"optional":true},"posthog-node":{"optional":true}},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/observability_3.0.0_1790529021950_0.23012836348221732"}}},"time":{"created":"2026-08-30T16:12:58.663Z","modified":"2026-09-27T17:10:22.368Z","1.0.0":"2026-08-30T16:12:58.972Z","1.1.0":"2026-08-30T18:34:10.699Z","1.2.0":"2026-08-30T19:43:57.056Z","1.3.0":"2026-09-01T09:25:58.035Z","1.4.0":"2026-09-01T13:21:46.233Z","2.0.0":"2026-09-02T06:55:50.096Z","2.1.0":"2026-09-02T13:52:36.389Z","2.2.0":"2026-09-02T17:19:57.417Z","2.3.0":"2026-09-03T07:18:44.716Z","2.3.1":"2026-09-03T11:34:57.307Z","2.4.2":"2026-09-03T14:13:27.070Z","2.4.3":"2026-09-04T23:53:19.923Z","2.5.0":"2026-09-05T08:03:11.704Z","2.5.1":"2026-09-06T09:09:13.707Z","2.5.2":"2026-09-06T13:27:53.608Z","2.5.3":"2026-09-06T16:37:28.466Z","2.6.0":"2026-09-07T10:15:51.349Z","2.6.1":"2026-09-07T17:56:55.368Z","2.7.0":"2026-09-12T10:38:00.920Z","2.8.0":"2026-09-14T21:30:32.786Z","2.9.0":"2026-09-15T10:34:57.991Z","2.10.0":"2026-09-15T16:30:17.984Z","2.11.0":"2026-09-24T17:42:59.499Z","2.11.1":"2026-09-25T15:46:27.661Z","2.12.0":"2026-09-25T17:11:39.913Z","2.13.0":"2026-09-26T14:23:18.433Z","3.0.0":"2026-09-27T17:10:22.047Z"},"license":"Apache-2.0","homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/observability","keywords":["observability","error-tracking","health-check","posthog","tracing","result","workers"],"repository":{"url":"git+https://github.com/microcompanies/geonosis.git","type":"git","directory":"packages/observability"},"description":"Ports whose answer can say failed: an ErrorSink and a Tracer returning Result, one attribute vocabulary (tenant as a group id, never a person), a memory sink, envelope-id dedupe, a PostHog adapter, a tiered health registry, and a probe that plants an erro","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"readme":"# @geonosis/observability\n\nThrough the front door: `geonosis observability` — the metapackage pins this and every other kit\ntool at ONE version, and passes the exit code through unchanged.\n\n**Ports whose answer can say *failed*, a vocabulary that refuses a person as a tenant, and a probe\nthat plants an error and goes and looks for it.**\n\nExtracted from a Workers + D1 app's PostHog sink and health endpoint, a Medusa storefront's provider seam, and Midday's\ntiered health registry — after an afternoon in which four instruments reported green while measuring\nnothing (`docs/rules-backlog.md` #42). Zero runtime dependencies. Node ≥ 22 and workerd: every flush\nis explicit or returned as a promise the host can `waitUntil`, and no timer is ever left running.\n\n```bash\npnpm add @geonosis/observability better-result\npnpm add posthog-node      # only if you use the /posthog adapter\n```\n\n| Import | What is behind it |\n|---|---|\n| `@geonosis/observability` | the ports, the vocabulary, `createMemorySink`, `createSwallowingSink`, `createMemoryTracer`, `withDedupe`, `withLastEvent`, `proveObservability` |\n| `@geonosis/observability/health` | `createHealthRegistry` — tiers, TTL, timeouts, `ready()` vs `dependencies()` |\n| `@geonosis/observability/posthog` | `createPostHogSink` — the vendor is injected, never imported |\n| `geonosis-observability prove` | the CLI. Four verdicts, exit 0 or 2 |\n\n---\n\n## 1. The ports\n\n```ts\ntype ErrorSink = {\n  capture: (error: Error, attributes: Attributes) => Promise<Result<CaptureReceipt, SinkFailure>>\n  flush: () => Promise<Result<void, SinkFailure>>\n  kind: string\n}\n\ntype CaptureReceipt = { deduplicated: boolean; id: string }\n```\n\n`better-result` is a **required peer**: `Result` is in every return type, so you cannot call this\npackage without it, and a second copy in a `dependencies` field would put two `Ok` classes in one\ntree.\n\n**Why not `Promise<number>`.** a Workers + D1 app's seam answers with a count: `events.length` from the real\nsink, `0` from the one with no key, a rejected promise from a dead transport — handed to\n`waitUntil`, where nothing reads it. A count cannot say *failed*. That is the shape `no-void-port`\nrefuses, wearing a number instead of `void`.\n\n**Why the receipt carries an id.** React strips an error's message on the way to a browser; a deploy\nrenames every stack frame. The id the sink filed the report under survives both, which is why it is\nin the answer rather than in a log line.\n\n```ts\nconst receipt = await sink.capture(error, { envelopeId, service: 'api', tenant: orgId })\nif (receipt.isErr()) log.warn('the report did not land', receipt.error.sink, receipt.error.message)\nelse response.headers.set('x-error-id', receipt.value.id)\n```\n\n### The tracer\n\n```ts\ntracer.span('queue.handle-batch', { service: 'api', tenant: orgId }, async () => doTheWork())\n```\n\nReturns whatever the body returned and rethrows whatever it threw. It is a recorder, not a gate: a\ntracer that swallowed a throw would make a failed request answer 200. Its own failures are its own\nbusiness and never the caller's.\n\n**Span names** are `<area>.<action>`, lowercase, at least two dot-separated segments, dashes inside a\nsegment: `queue.handle-batch`, `db.cell.query`, `http.request`. `isSpanName(name)` decides;\n`SPAN_NAME_CONVENTION` states it. Never enforced by a throw — a bad span name must not become a 500\n— so assert it in your own tests if you want it held.\n\n## 2. The vocabulary\n\n| Field | Meaning |\n|---|---|\n| `service` | **required.** A report nobody can route to a service is a report nobody reads. |\n| `tenant` | Always a **group id**, never a person. Refused if it contains `@`. |\n| `envelopeId` | The id this occurrence already has upstream. The dedupe key, and the id it is filed under. |\n| `runtime` | `node`, `workerd`, `browser`, a container id. An open string. |\n| `release` | Which build. |\n| `actor` | The one field that MAY carry an identity. |\n| `extra` | Anything else. May not shadow a field above. |\n\n`release` and `runtime` are here because **neither consumer attaches either**, and a production error\nthat cannot be pinned to a deploy is the first of the four lying instruments.\n\n`tenant` refusing an `@` is the one rule that is not a shape check. A group id is the join key every\ndashboard fans out on, and the one field an erasure request cannot reach once an address is in it —\nand it is the mistake both repos would make first, because `distinctId` legitimately holds a person\nand the two fields sit one line apart.\n\n```ts\nimport { parseAttributes, attributesSchema } from '@geonosis/observability'\nimport { z } from 'zod'\n\nparseAttributes(value)      // → Result<Attributes, InvalidAttributes>, no zod anywhere\nattributesSchema(z)         // → the same rules, built over YOUR zod\n```\n\nTwo doors, one set of rules. Both consumers run different zod versions (4.2.0, 4.4.3 and 4.5.4\nmeasured across the two trees), so this package imports none.\n\n## 3. The sinks\n\n```ts\nconst sink = createMemorySink()      // a real implementation: what tests and the probe read\nconst sink = createSwallowingSink()  // answers ok, keeps nothing — shipped so --prove can catch it\n```\n\n`createSwallowingSink` is a Workers + D1 app's `silentAnalyticsSink` with the `console.info` removed. It is\nhere on purpose: it is what both consumers actually run whenever no key is set, and a probe that\ncould not tell it from a real sink would prove nothing.\n\n### Dedupe\n\n```ts\nwithDedupe(sink)                                  // an in-memory Map\nwithDedupe(sink, { seen, remember })              // your store: a KV namespace, an audit table\n```\n\nAt-least-once in, at-most-once counted. A repeat of a known `envelopeId` answers with the id the\nfirst capture was filed under and `deduplicated: true`, and the inner sink is not called. An\nenvelope whose capture **failed** is not remembered — buying at-most-once by losing at-least-once\nwould make one transport error permanent silence for that envelope.\n\nAn attributes bag with no `envelopeId` always passes through: a Workers + D1 app mints a fresh uuid for a\n`request`-door failure precisely because it has none, and dropping the second of two would lose a\nreal second failure.\n\n### The last-event file\n\n```ts\nwithLastEvent(sink, (record) => writeFile('.geonosis/last-event.json', JSON.stringify(record)))\n```\n\nWrites `{ at, id, sink, release? }` after a capture the sink accepted — nothing for a refusal,\nnothing for a deduplicated repeat. This is the file `geonosis-doctor`'s `observability` check reads.\nThe writer is injected because a file is a Node fact; on workerd the same record goes to KV.\n\n## 4. The PostHog adapter\n\n```ts\nimport { PostHog } from 'posthog-node'\nimport { createPostHogSink } from '@geonosis/observability/posthog'\n\nconst sink = createPostHogSink({\n  newClient: (batchSize) =>\n    new PostHog(env.POSTHOG_API_KEY, {\n      host: env.POSTHOG_HOST,\n      flushAt: batchSize,\n      flushInterval: 0,   // no long-lived process to run a timer in\n    }),\n  groupName: 'organization',                          // default\n  identityOf: (a) => a.actor ?? `org:${a.tenant}`,    // a Workers + D1 app's\n})\n\n// in a worker\nctx.waitUntil(sink.flushable().promise)\n```\n\n`posthog-node` is never imported here — you pass the constructor. That keeps this package at zero\nruntime dependencies, keeps your key and host out of it, and makes the whole adapter drivable\nagainst a stub server with no network.\n\n`flushable()` returns `{ pending, promise }`. Read `pending` before awaiting to skip the call when\nthere is nothing to send; the promise **resolves**, never rejects, so a host handing it to\n`waitUntil` is not handed a rejection it never asked for. Read the `Result` if you want to know.\n\n**Two vendor behaviours this is built around**, both measured against `posthog-node@5.50.0`:\n\n1. **A `uuid` that is not a valid UUID is silently replaced.** a Workers + D1 app's ids are\n   `crypto.randomUUID()`, so its dedupe works; ids like `evt_7`, a ULID, a nanoid or a Medusa\n   `order_01H…` would be dedupe keys that never arrive. The adapter passes a UUID through untouched\n   and derives a **stable UUIDv5** from anything else — same envelope, same uuid, every process,\n   verified against CPython's `uuid5` — and puts the original on the wire as `properties.envelopeId`.\n2. **`shutdown()` resolves over a batch the server refused.** A 500 and a dead port both leave the\n   await resolving normally; the failure is reported only through an `on('error')` listener. The\n   adapter subscribes and turns what it hears into the `SinkFailure`.\n\n### At the composition root\n\nThe sink is built ONCE, where the app is wired, and handed to everything else as the port. A repo\nthat installs this package and composes nothing sends production errors nowhere while every gate\nstays green — the reference consumer did exactly that, which is why `geonosis-doctor --only drift`\nnow WARNs when no source file in the tree imports this package at all.\n\n```ts\n// apps/api/src/observability.ts — the composition root, imported by the entry point and nothing else\nimport { PostHog } from 'posthog-node'\nimport { withDedupe, withLastEvent } from '@geonosis/observability'\nimport { createPostHogSink } from '@geonosis/observability/posthog'\n\nexport const sink = withLastEvent(\n  withDedupe(\n    createPostHogSink({\n      newClient: (batchSize) =>\n        new PostHog(env.POSTHOG_API_KEY, { flushAt: batchSize, flushInterval: 0, host: env.POSTHOG_HOST }),\n    }),\n  ),\n  // The writer is yours: a file on Node, a KV put on workerd. This package touches no fs.\n  async (event) => writeFile('.geonosis/last-event.json', JSON.stringify(event)),\n)\n```\n\n```jsonc\n// geonosis.json — what the doctor reads back\n\"observability\": {\n  \"sink\": \"posthog\",\n  \"endpoint\": \"https://eu.i.posthog.com\",\n  \"lastEventFile\": \".geonosis/last-event.json\",\n  \"maxAgeSeconds\": 3600\n}\n```\n\nThe entry point imports `sink` and nothing else constructs one: two sinks in one process are two\ndedupe caches, two flush schedules, and one of them writing the last-event file the doctor reads.\n\n**The browser half is yours.** `posthog-js` is a bundler and framework fact — a key-gated, memoised\ndynamic `import('posthog-js')`, `identify(userId)` on sign-in, `group('organization', orgId)` so the\nbrowser session and the server events join on the same key. Use the same group name you passed here\nand the two halves meet; that is all this package can usefully say about it.\n\n## 5. `--prove`\n\n```bash\ngeonosis-observability prove --sink memory\ngeonosis-observability prove --sink posthog-stub\ngeonosis-observability prove --sink posthog --verify-command 'my-posthog-query \"$GEONOSIS_TRACE_ID\"'\n```\n\nPlants an error under a trace id nothing else in the world has, then goes and LOOKS.\n\n| Verdict | Meaning | Exit |\n|---|---|---|\n| `PROVEN observability: the planted error reached <sink> as <trace id>` | found | 0 |\n| `CANNOT FAIL: the sink swallowed it` | answered ok, kept nothing | 2 |\n| `MISREAD: …` | kept something, but not the plant | 2 |\n| `CANNOT MEASURE: …` | nothing configured, a refused plant, or a failed flush | 2 |\n\n`--sink posthog` **refuses without `--verify-command`**. A key proves you can send; sending is not\narriving, and \"the SDK did not complain\" is exactly the evidence that was found to be worthless.\nNothing here queries anybody's project — your command runs with `GEONOSIS_TRACE_ID` in its\nenvironment and its exit code is the answer.\n\nPut your own sink behind the same four verdicts with the exported `proveObservability`:\n\n```ts\nconst proof = await proveObservability({ probe: { kind, sink, seen: (id) => lookItUp(id) } })\nprocess.exit(exitCodeOf(proof))\n```\n\n## 6. The health contract\n\n```ts\nimport { createHealthRegistry } from '@geonosis/observability/health'\n\nconst health = createHealthRegistry({\n  dependencies: [\n    { name: 'cell', tier: 1, check: () => pingCell(db), timeoutMs: 2000, ttlMs: 5000 },\n    { name: 'controlPlane', tier: 1, check: () => pingControl(control), timeoutMs: 2000 },\n    { name: 'search', tier: 4, check: () => pingSearch(), timeoutMs: 1000, ttlMs: 30_000 },\n  ],\n})\n```\n\n`ready()` runs **tier 1 only** and answers `{ ok, status: 200 | 503, degraded, dependencies }`.\n`dependencies()` runs every tier; its `status` still follows tier 1, so a degraded search index does\nnot take a pod out. A registry with no tier-1 dependency answers 503 — a 200 from a registry that\nverified nothing is the `/health` over an unreachable database, built out of an empty array.\n\n`timeoutMs` (5s default) makes a hang a failure with `timed out after Nms`, and the timer is cleared\non the path where the check answered first. `ttlMs` caches a good answer and marks it\n`cached: true`; a failure is **never** cached, because a service reported dead for a minute after it\nrecovered is worse than one nobody predicted.\n\n### Fixture — Hono\n\n```ts\napp.get('/health/ready', async (c) => {\n  const report = await health.ready()\n  return c.json(report, report.status)\n})\n\napp.get('/health/dependencies', async (c) => {\n  const report = await health.dependencies()\n  return c.json(report, report.status)\n})\n```\n\n### Fixture — Node `http`\n\n```ts\ncreateServer(async (request, response) => {\n  const report =\n    request.url === '/health/ready' ? await health.ready() : await health.dependencies()\n\n  response.writeHead(report.status, { 'content-type': 'application/json' })\n  response.end(JSON.stringify(report))\n})\n```\n\nBoth are examples, not code this package ships: a health registry that depended on one server could\nnot be used by the other.\n\n## 7. The doctor line\n\n`geonosis-doctor` gains an `observability` check when `geonosis.json` has a block:\n\n```json\n{\n  \"observability\": {\n    \"sink\": \"posthog\",\n    \"endpoint\": \"https://eu.i.posthog.com\",\n    \"lastEventFile\": \".geonosis/last-event.json\",\n    \"maxAgeSeconds\": 3600,\n    \"probe\": \"geonosis-observability prove --sink posthog-stub\"\n  }\n}\n```\n\nIt asks whether a sink is configured (a `memory`/`noop`/`swallowing` one is a WARN), whether the\nendpoint answers a HEAD, and whether an event arrived inside `maxAgeSeconds`. It reads the FILE\n`withLastEvent` wrote and **imports nothing of this package** — a check that needed the library it\nchecks cannot run in the tree where the library is missing, which is the first case it exists to\nfind. It names your `probe` command; it never runs it.\n\n---\n\n## Migrating a hand-rolled mirror\n\nA repo's own PostHog mirror module becomes a `createPostHogSink` instance plus `withDedupe`.\n\n| Today | With this package |\n|---|---|\n| `AnalyticsSink { capture: (events) => Promise<number> }` | `ErrorSink` returning `Result<CaptureReceipt, SinkFailure>` |\n| `distinctId: message.actor ?? \\`org:${orgId}\\`` | `identityOf: (a) => a.actor ?? \\`org:${a.tenant}\\`` — the `org:` prefix stays yours |\n| `groups: { organization: orgId }` | `tenant: orgId` + `groupName: 'organization'` (the default) |\n| `uuid: message.id` | `envelopeId: message.id` — already a UUID, so it goes on the wire unchanged |\n| `new PostHog(key, { flushAt: events.length, flushInterval: 0 })` per batch | your `newClient(batchSize)`, verbatim |\n| `context.waitUntil(analytics.capture(mirrored))` | `for (…) await sink.capture(…)`, then `context.waitUntil(sink.flushable().promise)` |\n| `await client.shutdown()` then `return events.length` | the `Result` — `shutdown()` resolving over a refused batch is why |\n| `silentAnalyticsSink` when no key | `createSwallowingSink()`, and `--prove` says `CANNOT FAIL` over it |\n| `handleQueue({ seen: (id) => hasAuditEntryForEvent(db, { eventId: id }) })` | keep it — and add `withDedupe(sink, { seen, remember })` for the counting |\n| `FailureDoor = 'cron' \\| 'mail' \\| 'queue' \\| 'request' \\| 'workflow'` | `extra: { door }` — the five values are a worker's, not a vocabulary's |\n| `failureEventFor` minting `crypto.randomUUID()` | leave `envelopeId` off; the sink mints one |\n| `healthStatus(version, probes)` | `createHealthRegistry`, with `cell` and `controlPlane` at tier 1 and a `timeoutMs` each |\n| one `/health` | `/health/ready` from `ready()`, `/health/dependencies` from `dependencies()` |\n| nothing | `release` and `runtime` on every capture, and a `probe` line in `geonosis.json` |\n\n`apps/web/lib/analytics/browser.ts` does not move. It is `posthog-js`, a bundler-visible env read and\na dynamic import — all three are the app's. Keep `group('organization', orgId)` matching `groupName`.\n\n## Migrating a Medusa storefront\n\nA Medusa storefront has **no error sink and no health endpoint at all**. Its migration is adoption, not\nreplacement, and its own best-shaped seam is the template:\n`packages/medusa-plugins/customer-service/src/lib/llm-provider.ts` resolves three ways\n(`anthropic` | `claude-cli` | `dev`) and its no-key path is a real deterministic implementation, not\na null object.\n\n1. Put `createMemorySink()` behind that same shape — a resolver that returns the memory sink with no\n   key and a real adapter with one. A Medusa storefront's no-key path is then readable, which\n   `silentAnalyticsSink` never was.\n2. `service` is the plugin or the app; `tenant` is nothing until it has one — leave it off rather\n   than putting a customer in it.\n3. Medusa entity ids (`order_01H…`) are **not** UUIDs. Pass them as `envelopeId` anyway: the adapter\n   derives a stable UUIDv5 and keeps the original as `properties.envelopeId`. Passing one straight to\n   `posthog-node` would lose the dedupe silently.\n4. `withDevFallback`'s `[dev-fallback]` marker is the same idea as `deduplicated: true` and the\n   `CANNOT FAIL` verdict — a run that did less than it looks like it did says so.\n5. There is no `/health` to migrate. Add `createHealthRegistry` with Postgres and Redis at tier 1\n   and the search provider at tier 3, and `--prove` in the gate.\n\n## Consumable from CommonJS\n\nA Medusa backend is `module: Node16` CommonJS **by upstream requirement**, not by preference. The\nlibrary entries here ship both builds and a `require` condition carrying their own `.d.cts`, so a\nstatic import type-checks and `require()` works:\n\n```ts\nimport { createTracer } from '@geonosis/observability'      // ESM\nconst { createTracer } = require('@geonosis/observability') // CommonJS\n```\n\n`geonosis-observability`, the bin, stays ESM alone: nothing `require()`s a bin, and its entry opens\nwith a top-level await that CommonJS cannot express. Building it twice would mean rewriting a\nworking entry point for a consumer that does not exist.\n","readmeFilename":""}