{"_id":"@ai-matrx/realtime","_rev":"30-2e5855a797b55353484fffb560697099","name":"@ai-matrx/realtime","dist-tags":{"latest":"0.8.7"},"versions":{"0.1.0":{"name":"@ai-matrx/realtime","version":"0.1.0","keywords":["supabase","realtime","broadcast","postgres-changes","presence","typing-indicator","echo-suppression","reconnect","backoff","ai-matrx","react","react-native"],"license":"MIT","_id":"@ai-matrx/realtime@0.1.0","maintainers":[{"name":"armanisadeghi","email":"arman@armansadeghi.com"}],"homepage":"https://github.com/AI-Matrix-Engine/aidream/tree/main/apps/shared/realtime#readme","bugs":{"url":"https://github.com/AI-Matrix-Engine/aidream/issues"},"dist":{"shasum":"8cab820c1ff0426e8d2de1d5f620317b95c59b94","tarball":"https://registry.npmjs.org/@ai-matrx/realtime/-/realtime-0.1.0.tgz","fileCount":22,"integrity":"sha512-Jh7Hq6ZZRvCHX7UD+yTxWgj/LbbWTXypPivkOMg96KmZimxMZzRJTrw23IHYvOXgcCunldQeQKHo0LYtzBiKDw==","signatures":[{"sig":"MEUCIQCzA9/fjV+eC8L0Y9nG6pCO0K6Vn6zfieNi9RhvWAza6gIgZpPx91G0xmoZAXm8sIz9mVC8IbNtXqE4+Q9mDYPOIwI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1292268},"main":"./dist/index.cjs","type":"module","_from":"file:/var/folders/cq/w_03_zqn47b125c7dbz4x5xm0000gn/T/tmp.u1pWUuPdaB/ai-matrx-realtime-0.1.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./react":{"import":{"types":"./dist/react.d.ts","default":"./dist/react.js"},"require":{"types":"./dist/react.d.cts","default":"./dist/react.cjs"}},"./native":{"import":{"types":"./dist/native.d.ts","default":"./dist/native.js"},"require":{"types":"./dist/native.d.cts","default":"./dist/native.cjs"}},"./package.json":"./package.json"},"scripts":{"test":"vitest run","build":"pnpm clean && tsup","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","check:package":"pnpm build && publint && pnpm verify:tarball","verify:tarball":"node ./scripts/verify-tarball.mjs"},"_npmUser":{"name":"armanisadeghi","email":"arman@armansadeghi.com"},"_resolved":"/var/folders/cq/w_03_zqn47b125c7dbz4x5xm0000gn/T/tmp.u1pWUuPdaB/ai-matrx-realtime-0.1.0.tgz","_integrity":"sha512-Jh7Hq6ZZRvCHX7UD+yTxWgj/LbbWTXypPivkOMg96KmZimxMZzRJTrw23IHYvOXgcCunldQeQKHo0LYtzBiKDw==","repository":{"url":"git+https://github.com/AI-Matrix-Engine/aidream.git","type":"git","directory":"apps/shared/realtime"},"_npmVersion":"11.19.0","description":"The ONE Supabase Realtime layer for Matrx clients: channel-naming registry, enforced channel lifecycle, echo suppression on by default, at-least-once delivery with idempotent dedup, a decoupled ordered handler queue, reconnect with jittered backoff and a ","directories":{},"sideEffects":false,"_nodeVersion":"26.7.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","jsdom":"^25.0.1","react":"^19.1.0","vitest":"^4.1.6","publint":"^0.3.24","react-dom":"^19.2.0","typescript":"^5.9.3","@types/node":"^22.20.0","@types/react":"^19.1.0","@types/react-dom":"^19.2.3","@arethetypeswrong/cli":"^0.18.5","@supabase/supabase-js":"^2.108.2","@testing-library/react":"^16.3.0"},"peerDependencies":{"react":">=18.0.0","react-native":">=0.76.0"},"peerDependenciesMeta":{"react":{"optional":true},"react-native":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/realtime_0.1.0_1788160483746_0.36231455046053473","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@ai-matrx/realtime","version":"0.1.1","keywords":["supabase","realtime","broadcast","postgres-changes","presence","typing-indicator","echo-suppression","reconnect","backoff","ai-matrx","react","react-native"],"license":"MIT","_id":"@ai-matrx/realtime@0.1.1","maintainers":[{"name":"armanisadeghi","email":"arman@armansadeghi.com"}],"homepage":"https://github.com/AI-Matrix-Engine/aidream/tree/main/apps/shared/realtime#readme","bugs":{"url":"https://github.com/AI-Matrix-Engine/aidream/issues"},"dist":{"shasum":"1cad1c32a98d10fe1191683ba26dcbfaa8c223f9","tarball":"https://registry.npmjs.org/@ai-matrx/realtime/-/realtime-0.1.1.tgz","fileCount":22,"integrity":"sha512-WhuMtQTVNwTuE54VCp8Nq/GAcfl6gnVlyjdByZed6hPZ5TaWonP7UE1+29LKiOc/i41ELxKvifww1vfIhegWjw==","signatures":[{"sig":"MEUCIQD1vvVsYem9IooeKDH6Ag4GhyeM3rNXssjY7jWPFzxIvwIgRvZLHQ1OSpMVwRuCtNLMmyoTIMxvtAX9VffDNfr6Ycs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1292573},"main":"./dist/index.cjs","type":"module","_from":"file:/home/runner/work/_temp/ai-matrx-realtime-0.1.1.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./react":{"import":{"types":"./dist/react.d.ts","default":"./dist/react.js"},"require":{"types":"./dist/react.d.cts","default":"./dist/react.cjs"}},"./native":{"import":{"types":"./dist/native.d.ts","default":"./dist/native.js"},"require":{"types":"./dist/native.d.cts","default":"./dist/native.cjs"}},"./package.json":"./package.json"},"scripts":{"test":"vitest run","build":"pnpm clean && tsup","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","check:package":"pnpm build && publint && pnpm verify:tarball","verify:tarball":"node ./scripts/verify-tarball.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dcc287be-03b7-48cf-a591-574c75e8462b"}},"_resolved":"/home/runner/work/_temp/ai-matrx-realtime-0.1.1.tgz","_integrity":"sha512-WhuMtQTVNwTuE54VCp8Nq/GAcfl6gnVlyjdByZed6hPZ5TaWonP7UE1+29LKiOc/i41ELxKvifww1vfIhegWjw==","repository":{"url":"git+https://github.com/AI-Matrix-Engine/aidream.git","type":"git","directory":"apps/shared/realtime"},"_npmVersion":"12.0.2","description":"The ONE Supabase Realtime layer for Matrx clients: channel-naming registry, enforced channel lifecycle, echo suppression on by default, at-least-once delivery with idempotent dedup, a decoupled ordered handler queue, reconnect with jittered backoff and a ","directories":{},"sideEffects":false,"_nodeVersion":"24.19.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","jsdom":"^25.0.1","react":"^19.1.0","vitest":"^4.1.6","publint":"^0.3.24","react-dom":"^19.2.0","typescript":"^5.9.3","@types/node":"^22.20.0","@types/react":"^19.1.0","@types/react-dom":"^19.2.3","@arethetypeswrong/cli":"^0.18.5","@supabase/supabase-js":"^2.108.2","@testing-library/react":"^16.3.0"},"peerDependencies":{"react":">=18.0.0","react-native":">=0.76.0"},"peerDependenciesMeta":{"react":{"optional":true},"react-native":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/realtime_0.1.1_1788190811565_0.3580866894724013","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@ai-matrx/realtime","version":"0.2.0","keywords":["supabase","realtime","broadcast","postgres-changes","presence","typing-indicator","echo-suppression","reconnect","backoff","ai-matrx","react","react-native"],"license":"MIT","_id":"@ai-matrx/realtime@0.2.0","maintainers":[{"name":"armanisadeghi","email":"arman@armansadeghi.com"}],"homepage":"https://github.com/AI-Matrix-Engine/aidream/tree/main/apps/shared/realtime#readme","bugs":{"url":"https://github.com/AI-Matrix-Engine/aidream/issues"},"dist":{"shasum":"905b010d986ef78e0cf5425481b49bee224d0060","tarball":"https://registry.npmjs.org/@ai-matrx/realtime/-/realtime-0.2.0.tgz","fileCount":22,"integrity":"sha512-1dnggOOWkdLZUb8kpJSCeGvNMe3T+RN+mMmaJu9DPYbx+RVJZqd//O0iJc9ZSDqNT69tjKOggC+SW0nVcZPEEQ==","signatures":[{"sig":"MEUCIQCEjclAdPqZITXLor63SHHexxYbsDPLC8rHQr3GGvlsqAIgJGLP1KAsDx3lJKuVl24fxR23FjWaLEiEksGsvMxXQQI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1525342},"main":"./dist/index.cjs","type":"module","_from":"file:/home/runner/work/_temp/ai-matrx-realtime-0.2.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./react":{"import":{"types":"./dist/react.d.ts","default":"./dist/react.js"},"require":{"types":"./dist/react.d.cts","default":"./dist/react.cjs"}},"./native":{"import":{"types":"./dist/native.d.ts","default":"./dist/native.js"},"require":{"types":"./dist/native.d.cts","default":"./dist/native.cjs"}},"./package.json":"./package.json"},"scripts":{"test":"vitest run","build":"pnpm clean && tsup","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","check:package":"pnpm build && publint && pnpm verify:tarball","verify:tarball":"node ./scripts/verify-tarball.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dcc287be-03b7-48cf-a591-574c75e8462b"}},"_resolved":"/home/runner/work/_temp/ai-matrx-realtime-0.2.0.tgz","_integrity":"sha512-1dnggOOWkdLZUb8kpJSCeGvNMe3T+RN+mMmaJu9DPYbx+RVJZqd//O0iJc9ZSDqNT69tjKOggC+SW0nVcZPEEQ==","repository":{"url":"git+https://github.com/AI-Matrix-Engine/aidream.git","type":"git","directory":"apps/shared/realtime"},"_npmVersion":"12.0.2","description":"The ONE Supabase Realtime layer for Matrx clients: channel-naming registry, enforced channel lifecycle, echo suppression on by default, at-least-once delivery with idempotent dedup, a decoupled ordered handler queue, reconnect with jittered backoff and a ","directories":{},"sideEffects":false,"_nodeVersion":"24.19.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","jsdom":"^25.0.1","react":"^19.1.0","vitest":"^4.1.6","publint":"^0.3.24","react-dom":"^19.2.0","typescript":"^5.9.3","@types/node":"^22.20.0","@types/react":"^19.1.0","@types/react-dom":"^19.2.3","@arethetypeswrong/cli":"^0.18.5","@supabase/supabase-js":"^2.108.2","@testing-library/react":"^16.3.0"},"peerDependencies":{"react":">=18.0.0","react-native":">=0.76.0"},"peerDependenciesMeta":{"react":{"optional":true},"react-native":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/realtime_0.2.0_1788193769797_0.2948204553793947","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@ai-matrx/realtime","version":"0.2.1","keywords":["supabase","realtime","broadcast","postgres-changes","presence","typing-indicator","echo-suppression","reconnect","backoff","ai-matrx","react","react-native"],"license":"MIT","_id":"@ai-matrx/realtime@0.2.1","maintainers":[{"name":"armanisadeghi","email":"arman@armansadeghi.com"}],"homepage":"https://github.com/AI-Matrix-Engine/aidream/tree/main/apps/shared/realtime#readme","bugs":{"url":"https://github.com/AI-Matrix-Engine/aidream/issues"},"dist":{"shasum":"0df1cbf71c021abfff56f9622c27fd99c77fc6ea","tarball":"https://registry.npmjs.org/@ai-matrx/realtime/-/realtime-0.2.1.tgz","fileCount":22,"integrity":"sha512-xOaYlNa6Pt6IyU+AwKr/UyrRcfv7OfURvB6arMsTOs7z6lsI1DA/6QsRtiTQrEZRGihh8fAh7qg1T6PGMUZmGQ==","signatures":[{"sig":"MEUCIGAhRMV6L1R+yyNX2jwMThXmiLKTV2lBlQR2xzrlVcpKAiEAjcmV30G9TpFQcG2xJb5r0sqgxOQykYnPKLyRAcDkH+Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1525572},"main":"./dist/index.cjs","type":"module","_from":"file:/home/runner/work/_temp/ai-matrx-realtime-0.2.1.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./react":{"import":{"types":"./dist/react.d.ts","default":"./dist/react.js"},"require":{"types":"./dist/react.d.cts","default":"./dist/react.cjs"}},"./native":{"import":{"types":"./dist/native.d.ts","default":"./dist/native.js"},"require":{"types":"./dist/native.d.cts","default":"./dist/native.cjs"}},"./package.json":"./package.json"},"scripts":{"test":"vitest run","build":"pnpm clean && tsup","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","check:package":"pnpm build && publint && pnpm verify:tarball","verify:tarball":"node ./scripts/verify-tarball.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dcc287be-03b7-48cf-a591-574c75e8462b"}},"_resolved":"/home/runner/work/_temp/ai-matrx-realtime-0.2.1.tgz","_integrity":"sha512-xOaYlNa6Pt6IyU+AwKr/UyrRcfv7OfURvB6arMsTOs7z6lsI1DA/6QsRtiTQrEZRGihh8fAh7qg1T6PGMUZmGQ==","repository":{"url":"git+https://github.com/AI-Matrix-Engine/aidream.git","type":"git","directory":"apps/shared/realtime"},"_npmVersion":"12.0.2","description":"The ONE Supabase Realtime layer for Matrx clients: channel-naming registry, enforced channel lifecycle, echo suppression on by default, at-least-once delivery with idempotent dedup, a decoupled ordered handler queue, reconnect with jittered backoff and a ","directories":{},"sideEffects":false,"_nodeVersion":"24.19.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","jsdom":"^25.0.1","react":"^19.1.0","vitest":"^4.1.6","publint":"^0.3.24","react-dom":"^19.2.0","typescript":"^5.9.3","@types/node":"^22.20.0","@types/react":"^19.1.0","@types/react-dom":"^19.2.3","@arethetypeswrong/cli":"^0.18.5","@supabase/supabase-js":"^2.108.2","@testing-library/react":"^16.3.0"},"peerDependencies":{"react":">=18.0.0","react-native":">=0.76.0"},"peerDependenciesMeta":{"react":{"optional":true},"react-native":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/realtime_0.2.1_1788200082885_0.9345042389922429","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@ai-matrx/realtime","version":"0.3.0","keywords":["supabase","realtime","broadcast","postgres-changes","presence","typing-indicator","echo-suppression","reconnect","backoff","ai-matrx","react","react-native"],"license":"MIT","_id":"@ai-matrx/realtime@0.3.0","maintainers":[{"name":"armanisadeghi","email":"arman@armansadeghi.com"}],"homepage":"https://github.com/AI-Matrix-Engine/aidream/tree/main/apps/shared/realtime#readme","bugs":{"url":"https://github.com/AI-Matrix-Engine/aidream/issues"},"dist":{"shasum":"32ae9bef89049e5de5a1783453c6326cfa5265e8","tarball":"https://registry.npmjs.org/@ai-matrx/realtime/-/realtime-0.3.0.tgz","fileCount":22,"integrity":"sha512-DLeuSwMLFkrVe7+dMjJE8FKODkaYoCaK3mzdZykT5JPJVVh8KVCobmiJbHBl2vAd/XH9XAgm0Qy/vN9rtJHtTA==","signatures":[{"sig":"MEQCIFNHxNBVnlPHlzWbdvscrfhRxMAwgrljMVRKlnDdMn49AiB5QcHzaLW/GkhNXTWECmamlI4pc3kxOO8QhhcVeag/wQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1541853},"main":"./dist/index.cjs","type":"module","_from":"file:/home/runner/work/_temp/ai-matrx-realtime-0.3.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./react":{"import":{"types":"./dist/react.d.ts","default":"./dist/react.js"},"require":{"types":"./dist/react.d.cts","default":"./dist/react.cjs"}},"./native":{"import":{"types":"./dist/native.d.ts","default":"./dist/native.js"},"require":{"types":"./dist/native.d.cts","default":"./dist/native.cjs"}},"./package.json":"./package.json"},"scripts":{"test":"vitest run","build":"pnpm clean && tsup","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","check:package":"pnpm build && publint && pnpm verify:tarball","verify:tarball":"node ./scripts/verify-tarball.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dcc287be-03b7-48cf-a591-574c75e8462b"}},"_resolved":"/home/runner/work/_temp/ai-matrx-realtime-0.3.0.tgz","_integrity":"sha512-DLeuSwMLFkrVe7+dMjJE8FKODkaYoCaK3mzdZykT5JPJVVh8KVCobmiJbHBl2vAd/XH9XAgm0Qy/vN9rtJHtTA==","repository":{"url":"git+https://github.com/AI-Matrix-Engine/aidream.git","type":"git","directory":"apps/shared/realtime"},"_npmVersion":"12.0.2","description":"The ONE Supabase Realtime layer for Matrx clients: channel-naming registry, enforced channel lifecycle, echo suppression on by default, at-least-once delivery with idempotent dedup, a decoupled ordered handler queue, reconnect with jittered backoff and a ","directories":{},"sideEffects":false,"_nodeVersion":"24.20.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","jsdom":"^25.0.1","react":"^19.1.0","vitest":"^4.1.6","publint":"^0.3.24","react-dom":"^19.2.0","typescript":"^5.9.3","@types/node":"^22.20.0","@types/react":"^19.1.0","@types/react-dom":"^19.2.3","@arethetypeswrong/cli":"^0.18.5","@supabase/supabase-js":"^2.108.2","@testing-library/react":"^16.3.0"},"peerDependencies":{"react":">=18.0.0","react-native":">=0.76.0"},"peerDependenciesMeta":{"react":{"optional":true},"react-native":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/realtime_0.3.0_1788828124858_0.8075579010385969","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@ai-matrx/realtime","version":"0.4.0","keywords":["supabase","realtime","broadcast","postgres-changes","presence","typing-indicator","echo-suppression","reconnect","backoff","ai-matrx","react","react-native"],"license":"MIT","_id":"@ai-matrx/realtime@0.4.0","maintainers":[{"name":"armanisadeghi","email":"arman@armansadeghi.com"}],"homepage":"https://github.com/AI-Matrix-Engine/aidream/tree/main/apps/shared/realtime#readme","bugs":{"url":"https://github.com/AI-Matrix-Engine/aidream/issues"},"dist":{"shasum":"5821f788659521d3da3ab9e909a4e7e46704aef8","tarball":"https://registry.npmjs.org/@ai-matrx/realtime/-/realtime-0.4.0.tgz","fileCount":22,"integrity":"sha512-RPnF7uh8irJxB9AfK6vgiAAS7fFDkzbSODH6EVCdbKq2ulDJYsN1SkW81jZARVcQF+Kz7cCsAl4Pf+Oouz255Q==","signatures":[{"sig":"MEUCIDOiaxkKbQQIX1hiK8Kj6vLnsVZ+bXnw5JXmA6tb2qXNAiEA7vyPiNFkxXKIyWCBjtxvw5fRvMmq79gtAUf/3eJIlMA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1564363},"main":"./dist/index.cjs","type":"module","_from":"file:/home/runner/work/_temp/ai-matrx-realtime-0.4.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./react":{"import":{"types":"./dist/react.d.ts","default":"./dist/react.js"},"require":{"types":"./dist/react.d.cts","default":"./dist/react.cjs"}},"./native":{"import":{"types":"./dist/native.d.ts","default":"./dist/native.js"},"require":{"types":"./dist/native.d.cts","default":"./dist/native.cjs"}},"./package.json":"./package.json"},"scripts":{"test":"vitest run","build":"pnpm clean && tsup","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","check:package":"pnpm build && publint && pnpm verify:tarball","verify:tarball":"node ./scripts/verify-tarball.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dcc287be-03b7-48cf-a591-574c75e8462b"}},"_resolved":"/home/runner/work/_temp/ai-matrx-realtime-0.4.0.tgz","_integrity":"sha512-RPnF7uh8irJxB9AfK6vgiAAS7fFDkzbSODH6EVCdbKq2ulDJYsN1SkW81jZARVcQF+Kz7cCsAl4Pf+Oouz255Q==","repository":{"url":"git+https://github.com/AI-Matrix-Engine/aidream.git","type":"git","directory":"apps/shared/realtime"},"_npmVersion":"12.0.2","description":"The ONE Supabase Realtime layer for Matrx clients: channel-naming registry, enforced channel lifecycle, echo suppression on by default, at-least-once delivery with idempotent dedup, a decoupled ordered handler queue, reconnect with jittered backoff and a ","directories":{},"sideEffects":false,"_nodeVersion":"24.20.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","jsdom":"^25.0.1","react":"^19.1.0","vitest":"^4.1.6","publint":"^0.3.24","react-dom":"^19.2.0","typescript":"^5.9.3","@types/node":"^22.20.0","@types/react":"^19.1.0","@types/react-dom":"^19.2.3","@arethetypeswrong/cli":"^0.18.5","@supabase/supabase-js":"^2.108.2","@testing-library/react":"^16.3.0"},"peerDependencies":{"react":">=18.0.0","react-native":">=0.76.0"},"peerDependenciesMeta":{"react":{"optional":true},"react-native":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/realtime_0.4.0_1788830575694_0.703688204606846","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@ai-matrx/realtime","version":"0.5.0","keywords":["supabase","realtime","broadcast","postgres-changes","presence","typing-indicator","echo-suppression","reconnect","backoff","ai-matrx","react","react-native"],"license":"MIT","_id":"@ai-matrx/realtime@0.5.0","maintainers":[{"name":"armanisadeghi","email":"arman@armansadeghi.com"}],"homepage":"https://github.com/AI-Matrix-Engine/aidream/tree/main/apps/shared/realtime#readme","bugs":{"url":"https://github.com/AI-Matrix-Engine/aidream/issues"},"dist":{"shasum":"1888da9fa8f398de0f873554506a5d2b1ce55733","tarball":"https://registry.npmjs.org/@ai-matrx/realtime/-/realtime-0.5.0.tgz","fileCount":22,"integrity":"sha512-pzLT2lbZa8Smkdevln2DoOTDCqKzUC5FuBLUj/UeRH4UzEjbnKbuRCZiAYTB/NyBkc129AHRm3ya72wn0XmJWg==","signatures":[{"sig":"MEQCIQC/kwo+lEqz9FOdik3a7zIlMhBNvCW3S8WLoPS78qnT0QIfZL51iHrJgyrf/r8hcM90j4DfqhrIegGXTxz3GA4n1g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1678583},"main":"./dist/index.cjs","type":"module","_from":"file:/home/runner/work/_temp/ai-matrx-realtime-0.5.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./react":{"import":{"types":"./dist/react.d.ts","default":"./dist/react.js"},"require":{"types":"./dist/react.d.cts","default":"./dist/react.cjs"}},"./native":{"import":{"types":"./dist/native.d.ts","default":"./dist/native.js"},"require":{"types":"./dist/native.d.cts","default":"./dist/native.cjs"}},"./package.json":"./package.json"},"scripts":{"test":"vitest run","build":"pnpm clean && tsup","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","check:package":"pnpm build && publint && pnpm verify:tarball","verify:tarball":"node ./scripts/verify-tarball.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dcc287be-03b7-48cf-a591-574c75e8462b"}},"_resolved":"/home/runner/work/_temp/ai-matrx-realtime-0.5.0.tgz","_integrity":"sha512-pzLT2lbZa8Smkdevln2DoOTDCqKzUC5FuBLUj/UeRH4UzEjbnKbuRCZiAYTB/NyBkc129AHRm3ya72wn0XmJWg==","repository":{"url":"git+https://github.com/AI-Matrix-Engine/aidream.git","type":"git","directory":"apps/shared/realtime"},"_npmVersion":"12.0.2","description":"The ONE Supabase Realtime layer for Matrx clients: channel-naming registry, enforced channel lifecycle, echo suppression on by default, at-least-once delivery with idempotent dedup, a decoupled ordered handler queue, reconnect with jittered backoff and a ","directories":{},"sideEffects":false,"_nodeVersion":"24.20.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","jsdom":"^25.0.1","react":"^19.1.0","vitest":"^4.1.6","publint":"^0.3.24","react-dom":"^19.2.0","typescript":"^5.9.3","@types/node":"^22.20.0","@types/react":"^19.1.0","@types/react-dom":"^19.2.3","@arethetypeswrong/cli":"^0.18.5","@supabase/supabase-js":"^2.108.2","@testing-library/react":"^16.3.0"},"peerDependencies":{"react":">=18.0.0","react-native":">=0.76.0"},"peerDependenciesMeta":{"react":{"optional":true},"react-native":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/realtime_0.5.0_1788833357000_0.3471251739945862","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@ai-matrx/realtime","version":"0.6.0","keywords":["supabase","realtime","broadcast","postgres-changes","presence","typing-indicator","echo-suppression","reconnect","backoff","ai-matrx","react","react-native"],"license":"MIT","_id":"@ai-matrx/realtime@0.6.0","maintainers":[{"name":"armanisadeghi","email":"arman@armansadeghi.com"}],"homepage":"https://github.com/AI-Matrix-Engine/aidream/tree/main/apps/shared/realtime#readme","bugs":{"url":"https://github.com/AI-Matrix-Engine/aidream/issues"},"dist":{"shasum":"43544060cf1eb8fa68d6a061851e8573d070aa90","tarball":"https://registry.npmjs.org/@ai-matrx/realtime/-/realtime-0.6.0.tgz","fileCount":22,"integrity":"sha512-vZKulObElB643MHt1XP8eJIi05ejYNo8gb0TGjroiTvr6fmwW+9MeqiKnMXUOK8MCG+NC544/NVKK5diLZgr/A==","signatures":[{"sig":"MEYCIQD7dqlHtRvRJcNZJZkg6HxosVpew3bcGTxmsj8a1dqiQgIhANY+obqR899KaG251YTCxXwoYwXQkAjtIdLyqDHtBDTR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1742352},"main":"./dist/index.cjs","type":"module","_from":"file:/home/runner/work/_temp/ai-matrx-realtime-0.6.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./react":{"import":{"types":"./dist/react.d.ts","default":"./dist/react.js"},"require":{"types":"./dist/react.d.cts","default":"./dist/react.cjs"}},"./native":{"import":{"types":"./dist/native.d.ts","default":"./dist/native.js"},"require":{"types":"./dist/native.d.cts","default":"./dist/native.cjs"}},"./package.json":"./package.json"},"scripts":{"test":"vitest run","build":"pnpm clean && tsup","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","check:package":"pnpm build && publint && pnpm verify:tarball","verify:tarball":"node ./scripts/verify-tarball.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dcc287be-03b7-48cf-a591-574c75e8462b"}},"_resolved":"/home/runner/work/_temp/ai-matrx-realtime-0.6.0.tgz","_integrity":"sha512-vZKulObElB643MHt1XP8eJIi05ejYNo8gb0TGjroiTvr6fmwW+9MeqiKnMXUOK8MCG+NC544/NVKK5diLZgr/A==","repository":{"url":"git+https://github.com/AI-Matrix-Engine/aidream.git","type":"git","directory":"apps/shared/realtime"},"_npmVersion":"12.0.2","description":"The ONE Supabase Realtime layer for Matrx clients: channel-naming registry, enforced channel lifecycle, echo suppression on by default, at-least-once delivery with idempotent dedup, a decoupled ordered handler queue, reconnect with jittered backoff and a ","directories":{},"sideEffects":false,"_nodeVersion":"24.20.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","jsdom":"^25.0.1","react":"^19.1.0","vitest":"^4.1.6","publint":"^0.3.24","react-dom":"^19.2.0","typescript":"^5.9.3","@types/node":"^22.20.0","@types/react":"^19.1.0","@types/react-dom":"^19.2.3","@arethetypeswrong/cli":"^0.18.5","@supabase/supabase-js":"^2.108.2","@testing-library/react":"^16.3.0"},"peerDependencies":{"react":">=18.0.0","react-native":">=0.76.0"},"peerDependenciesMeta":{"react":{"optional":true},"react-native":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/realtime_0.6.0_1788835407956_0.02128586919683717","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@ai-matrx/realtime","version":"0.7.0","keywords":["supabase","realtime","broadcast","postgres-changes","presence","typing-indicator","echo-suppression","reconnect","backoff","ai-matrx","react","react-native"],"license":"MIT","_id":"@ai-matrx/realtime@0.7.0","maintainers":[{"name":"armanisadeghi","email":"arman@armansadeghi.com"}],"homepage":"https://github.com/AI-Matrix-Engine/aidream/tree/main/apps/shared/realtime#readme","bugs":{"url":"https://github.com/AI-Matrix-Engine/aidream/issues"},"dist":{"shasum":"72373a286ffad90a8f1d47516d5f5aad6e396f20","tarball":"https://registry.npmjs.org/@ai-matrx/realtime/-/realtime-0.7.0.tgz","fileCount":22,"integrity":"sha512-FxMRGE6We4tlQ9aH6QEAi4R9qYzTww/8M97JVvstYpKLz2uSn5z2Q5Hn+UjXJU2N2Pr9ZgVKIbGZk15JMmwTJQ==","signatures":[{"sig":"MEUCIEvZi3RYuBesXImswbLhlEOqeNhguqoEx7+ImEF9F8bVAiEAxSaY9xWMfDz8xYrjtJTIXddyWxvd9jjzkscXqu3D6OU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1787954},"main":"./dist/index.cjs","type":"module","_from":"file:/home/runner/work/_temp/ai-matrx-realtime-0.7.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./react":{"import":{"types":"./dist/react.d.ts","default":"./dist/react.js"},"require":{"types":"./dist/react.d.cts","default":"./dist/react.cjs"}},"./native":{"import":{"types":"./dist/native.d.ts","default":"./dist/native.js"},"require":{"types":"./dist/native.d.cts","default":"./dist/native.cjs"}},"./package.json":"./package.json"},"scripts":{"test":"vitest run","build":"pnpm clean && tsup","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","check:package":"pnpm build && publint && pnpm verify:tarball","verify:tarball":"node ./scripts/verify-tarball.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dcc287be-03b7-48cf-a591-574c75e8462b"}},"_resolved":"/home/runner/work/_temp/ai-matrx-realtime-0.7.0.tgz","_integrity":"sha512-FxMRGE6We4tlQ9aH6QEAi4R9qYzTww/8M97JVvstYpKLz2uSn5z2Q5Hn+UjXJU2N2Pr9ZgVKIbGZk15JMmwTJQ==","repository":{"url":"git+https://github.com/AI-Matrix-Engine/aidream.git","type":"git","directory":"apps/shared/realtime"},"_npmVersion":"12.0.2","description":"The ONE Supabase Realtime layer for Matrx clients: channel-naming registry, enforced channel lifecycle, echo suppression on by default, at-least-once delivery with idempotent dedup, a decoupled ordered handler queue, reconnect with jittered backoff and a ","directories":{},"sideEffects":false,"_nodeVersion":"24.20.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","jsdom":"^25.0.1","react":"^19.1.0","vitest":"^4.1.6","publint":"^0.3.24","react-dom":"^19.2.0","typescript":"^5.9.3","@types/node":"^22.20.0","@types/react":"^19.1.0","@types/react-dom":"^19.2.3","@arethetypeswrong/cli":"^0.18.5","@supabase/supabase-js":"^2.108.2","@testing-library/react":"^16.3.0"},"peerDependencies":{"react":">=18.0.0","react-native":">=0.76.0"},"peerDependenciesMeta":{"react":{"optional":true},"react-native":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/realtime_0.7.0_1788837019987_0.4807139978595827","host":"s3://npm-registry-packages-npm-production"}},"0.7.1":{"name":"@ai-matrx/realtime","version":"0.7.1","keywords":["supabase","realtime","broadcast","postgres-changes","presence","typing-indicator","echo-suppression","reconnect","backoff","ai-matrx","react","react-native"],"license":"MIT","_id":"@ai-matrx/realtime@0.7.1","maintainers":[{"name":"armanisadeghi","email":"arman@armansadeghi.com"}],"homepage":"https://github.com/AI-Matrix-Engine/aidream/tree/main/apps/shared/realtime#readme","bugs":{"url":"https://github.com/AI-Matrix-Engine/aidream/issues"},"dist":{"shasum":"c9849033bbd1989909fb2c3685d56daca1f4caec","tarball":"https://registry.npmjs.org/@ai-matrx/realtime/-/realtime-0.7.1.tgz","fileCount":22,"integrity":"sha512-hfK/0irMBY52t8LAO4aQcogE7srTwaVAtpuVyU0jopoBrqYBUccQMwJZRMpoKSQmVNtCdeXs03HHW2WeEGxnlQ==","signatures":[{"sig":"MEUCIA/ikC6ChC5OR6NrL9Xdj173B6+rKDuymrxjxSpCMp3YAiEAoHhZxyrinKZJzptLvzSwfg8xdEZUwaw+Xk8pfRLDdhE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1791405},"main":"./dist/index.cjs","type":"module","_from":"file:/home/runner/work/_temp/ai-matrx-realtime-0.7.1.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./react":{"import":{"types":"./dist/react.d.ts","default":"./dist/react.js"},"require":{"types":"./dist/react.d.cts","default":"./dist/react.cjs"}},"./native":{"import":{"types":"./dist/native.d.ts","default":"./dist/native.js"},"require":{"types":"./dist/native.d.cts","default":"./dist/native.cjs"}},"./package.json":"./package.json"},"scripts":{"test":"vitest run","build":"pnpm clean && tsup","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","check:package":"pnpm build && publint && pnpm verify:tarball","verify:tarball":"node ./scripts/verify-tarball.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dcc287be-03b7-48cf-a591-574c75e8462b"}},"_resolved":"/home/runner/work/_temp/ai-matrx-realtime-0.7.1.tgz","_integrity":"sha512-hfK/0irMBY52t8LAO4aQcogE7srTwaVAtpuVyU0jopoBrqYBUccQMwJZRMpoKSQmVNtCdeXs03HHW2WeEGxnlQ==","repository":{"url":"git+https://github.com/AI-Matrix-Engine/aidream.git","type":"git","directory":"apps/shared/realtime"},"_npmVersion":"12.0.2","description":"The ONE Supabase Realtime layer for Matrx clients: channel-naming registry, enforced channel lifecycle, echo suppression on by default, at-least-once delivery with idempotent dedup, a decoupled ordered handler queue, reconnect with jittered backoff and a ","directories":{},"sideEffects":false,"_nodeVersion":"24.20.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","jsdom":"^25.0.1","react":"^19.1.0","vitest":"^4.1.6","publint":"^0.3.24","react-dom":"^19.2.0","typescript":"^5.9.3","@types/node":"^22.20.0","@types/react":"^19.1.0","@types/react-dom":"^19.2.3","@arethetypeswrong/cli":"^0.18.5","@supabase/supabase-js":"^2.108.2","@testing-library/react":"^16.3.0"},"peerDependencies":{"react":">=18.0.0","react-native":">=0.76.0"},"peerDependenciesMeta":{"react":{"optional":true},"react-native":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/realtime_0.7.1_1788886971619_0.7802690541684802","host":"s3://npm-registry-packages-npm-production"}},"0.7.2":{"name":"@ai-matrx/realtime","version":"0.7.2","keywords":["supabase","realtime","broadcast","postgres-changes","presence","typing-indicator","echo-suppression","reconnect","backoff","ai-matrx","react","react-native"],"license":"MIT","_id":"@ai-matrx/realtime@0.7.2","maintainers":[{"name":"armanisadeghi","email":"arman@armansadeghi.com"}],"homepage":"https://github.com/AI-Matrix-Engine/aidream/tree/main/apps/shared/realtime#readme","bugs":{"url":"https://github.com/AI-Matrix-Engine/aidream/issues"},"dist":{"shasum":"7992b050fcd69544ffbaad6bff9192ec1c5a106a","tarball":"https://registry.npmjs.org/@ai-matrx/realtime/-/realtime-0.7.2.tgz","fileCount":22,"integrity":"sha512-vHybRwFvuRQ+XP8AKcxPbZOwr61/50mXcH0451st5jJ3FfVPokb0Gkl0afkqoA74niE7GmpYS24h74KUL02S5g==","signatures":[{"sig":"MEUCIAqnimRQMlzd5T08ce65mrWqN13FyfBTL5a/sOLQMY/MAiEAohVvb8mViLzyR3hvXymLVAlktIw8c4cVWAQenub32XY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1797428},"main":"./dist/index.cjs","type":"module","_from":"file:/home/runner/work/_temp/ai-matrx-realtime-0.7.2.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./react":{"import":{"types":"./dist/react.d.ts","default":"./dist/react.js"},"require":{"types":"./dist/react.d.cts","default":"./dist/react.cjs"}},"./native":{"import":{"types":"./dist/native.d.ts","default":"./dist/native.js"},"require":{"types":"./dist/native.d.cts","default":"./dist/native.cjs"}},"./package.json":"./package.json"},"scripts":{"test":"vitest run","build":"pnpm clean && tsup","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","check:package":"pnpm build && publint && pnpm verify:tarball","verify:tarball":"node ./scripts/verify-tarball.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dcc287be-03b7-48cf-a591-574c75e8462b"}},"_resolved":"/home/runner/work/_temp/ai-matrx-realtime-0.7.2.tgz","_integrity":"sha512-vHybRwFvuRQ+XP8AKcxPbZOwr61/50mXcH0451st5jJ3FfVPokb0Gkl0afkqoA74niE7GmpYS24h74KUL02S5g==","repository":{"url":"git+https://github.com/AI-Matrix-Engine/aidream.git","type":"git","directory":"apps/shared/realtime"},"_npmVersion":"12.0.2","description":"The ONE Supabase Realtime layer for Matrx clients: channel-naming registry, enforced channel lifecycle, echo suppression on by default, at-least-once delivery with idempotent dedup, a decoupled ordered handler queue, reconnect with jittered backoff and a ","directories":{},"sideEffects":false,"_nodeVersion":"24.20.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","jsdom":"^25.0.1","react":"^19.1.0","vitest":"^4.1.6","publint":"^0.3.24","react-dom":"^19.2.0","typescript":"^5.9.3","@types/node":"^22.20.0","@types/react":"^19.1.0","@types/react-dom":"^19.2.3","@arethetypeswrong/cli":"^0.18.5","@supabase/supabase-js":"^2.108.2","@testing-library/react":"^16.3.0"},"peerDependencies":{"react":">=18.0.0","react-native":">=0.76.0"},"peerDependenciesMeta":{"react":{"optional":true},"react-native":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/realtime_0.7.2_1788890559128_0.15530612622210915","host":"s3://npm-registry-packages-npm-production"}},"0.7.3":{"name":"@ai-matrx/realtime","version":"0.7.3","keywords":["supabase","realtime","broadcast","postgres-changes","presence","typing-indicator","echo-suppression","reconnect","backoff","ai-matrx","react","react-native"],"license":"MIT","_id":"@ai-matrx/realtime@0.7.3","maintainers":[{"name":"armanisadeghi","email":"arman@armansadeghi.com"}],"homepage":"https://github.com/AI-Matrix-Engine/aidream/tree/main/apps/shared/realtime#readme","bugs":{"url":"https://github.com/AI-Matrix-Engine/aidream/issues"},"dist":{"shasum":"78f9066802f641d44837875ba819c597d27adf55","tarball":"https://registry.npmjs.org/@ai-matrx/realtime/-/realtime-0.7.3.tgz","fileCount":22,"integrity":"sha512-GeHZoCEhgy456vb4a3hIJULCMzndqt4sPTyHhzV2cmt0bL1YFcVAON0Vy56C+NgrouHU6uTkOeMAP8RT8M/ZTw==","signatures":[{"sig":"MEUCIQD2Hnj452AeTBLo3iG1oHFXztxcR9I6XVe+1esPjimxfgIgZ0P3hGNO3CuwEhexzN9HT/w+hlMF5maffPI3bM3II8g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1821115},"main":"./dist/index.cjs","type":"module","_from":"file:/home/runner/work/_temp/ai-matrx-realtime-0.7.3.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./react":{"import":{"types":"./dist/react.d.ts","default":"./dist/react.js"},"require":{"types":"./dist/react.d.cts","default":"./dist/react.cjs"}},"./native":{"import":{"types":"./dist/native.d.ts","default":"./dist/native.js"},"require":{"types":"./dist/native.d.cts","default":"./dist/native.cjs"}},"./package.json":"./package.json"},"scripts":{"test":"vitest run","build":"pnpm clean && tsup","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","check:package":"pnpm build && publint && pnpm verify:tarball","verify:tarball":"node ./scripts/verify-tarball.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dcc287be-03b7-48cf-a591-574c75e8462b"}},"_resolved":"/home/runner/work/_temp/ai-matrx-realtime-0.7.3.tgz","_integrity":"sha512-GeHZoCEhgy456vb4a3hIJULCMzndqt4sPTyHhzV2cmt0bL1YFcVAON0Vy56C+NgrouHU6uTkOeMAP8RT8M/ZTw==","repository":{"url":"git+https://github.com/AI-Matrix-Engine/aidream.git","type":"git","directory":"apps/shared/realtime"},"_npmVersion":"12.0.2","description":"The ONE Supabase Realtime layer for Matrx clients: channel-naming registry, enforced channel lifecycle, echo suppression on by default, at-least-once delivery with idempotent dedup, a decoupled ordered handler queue, reconnect with jittered backoff and a ","directories":{},"sideEffects":false,"_nodeVersion":"24.20.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","jsdom":"^25.0.1","react":"^19.1.0","vitest":"^4.1.6","publint":"^0.3.24","react-dom":"^19.2.0","typescript":"^5.9.3","@types/node":"^22.20.0","@types/react":"^19.1.0","@types/react-dom":"^19.2.3","@arethetypeswrong/cli":"^0.18.5","@supabase/supabase-js":"^2.108.2","@testing-library/react":"^16.3.0"},"peerDependencies":{"react":">=18.0.0","react-native":">=0.76.0"},"peerDependenciesMeta":{"react":{"optional":true},"react-native":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/realtime_0.7.3_1788891353939_0.42277891214559693","host":"s3://npm-registry-packages-npm-production"}},"0.7.4":{"name":"@ai-matrx/realtime","version":"0.7.4","keywords":["supabase","realtime","broadcast","postgres-changes","presence","typing-indicator","echo-suppression","reconnect","backoff","ai-matrx","react","react-native"],"license":"MIT","_id":"@ai-matrx/realtime@0.7.4","maintainers":[{"name":"armanisadeghi","email":"arman@armansadeghi.com"}],"homepage":"https://github.com/AI-Matrix-Engine/aidream/tree/main/apps/shared/realtime#readme","bugs":{"url":"https://github.com/AI-Matrix-Engine/aidream/issues"},"dist":{"shasum":"edb54e7e5e24d342c8b3554c8707dfcba44d26f1","tarball":"https://registry.npmjs.org/@ai-matrx/realtime/-/realtime-0.7.4.tgz","fileCount":22,"integrity":"sha512-xSvbkI49yZQXjYZICBV+e/pIiz1VZTKFE1n0TK8+oSNJ5smu4bbkva8zBXiuyaq48XRQvnfmmxrOMn/1WxNdhw==","signatures":[{"sig":"MEUCIQCULXLroGpIt1RG8EZnmZbeBuh7FNmLB7+tvpwlqWPr0gIgfTt/cD+lgM85HPfbkzuikLYTU7uSnnLbuTbrgNE964I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1821184},"main":"./dist/index.cjs","type":"module","_from":"file:/home/runner/work/_temp/ai-matrx-realtime-0.7.4.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./react":{"import":{"types":"./dist/react.d.ts","default":"./dist/react.js"},"require":{"types":"./dist/react.d.cts","default":"./dist/react.cjs"}},"./native":{"import":{"types":"./dist/native.d.ts","default":"./dist/native.js"},"require":{"types":"./dist/native.d.cts","default":"./dist/native.cjs"}},"./package.json":"./package.json"},"scripts":{"test":"vitest run","build":"pnpm clean && tsup","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","check:package":"pnpm build && publint && pnpm verify:tarball","verify:tarball":"node ./scripts/verify-tarball.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dcc287be-03b7-48cf-a591-574c75e8462b"}},"_resolved":"/home/runner/work/_temp/ai-matrx-realtime-0.7.4.tgz","_integrity":"sha512-xSvbkI49yZQXjYZICBV+e/pIiz1VZTKFE1n0TK8+oSNJ5smu4bbkva8zBXiuyaq48XRQvnfmmxrOMn/1WxNdhw==","repository":{"url":"git+https://github.com/AI-Matrix-Engine/aidream.git","type":"git","directory":"apps/shared/realtime"},"_npmVersion":"12.0.2","description":"The ONE Supabase Realtime layer for Matrx clients: channel-naming registry, enforced channel lifecycle, echo suppression on by default, at-least-once delivery with idempotent dedup, a decoupled ordered handler queue, reconnect with jittered backoff and a ","directories":{},"sideEffects":false,"_nodeVersion":"24.20.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","jsdom":"^25.0.1","react":"^19.1.0","vitest":"^4.1.6","publint":"^0.3.24","react-dom":"^19.2.0","typescript":"^5.9.3","@types/node":"^22.20.0","@types/react":"^19.1.0","@types/react-dom":"^19.2.3","@arethetypeswrong/cli":"^0.18.5","@supabase/supabase-js":"^2.108.2","@testing-library/react":"^16.3.0"},"peerDependencies":{"react":">=18.0.0","react-native":">=0.76.0"},"peerDependenciesMeta":{"react":{"optional":true},"react-native":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/realtime_0.7.4_1788893003219_0.14120050587299282","host":"s3://npm-registry-packages-npm-production"}},"0.7.5":{"name":"@ai-matrx/realtime","version":"0.7.5","keywords":["supabase","realtime","broadcast","postgres-changes","presence","typing-indicator","echo-suppression","reconnect","backoff","ai-matrx","react","react-native"],"license":"MIT","_id":"@ai-matrx/realtime@0.7.5","maintainers":[{"name":"armanisadeghi","email":"arman@armansadeghi.com"}],"homepage":"https://github.com/AI-Matrix-Engine/aidream/tree/main/apps/shared/realtime#readme","bugs":{"url":"https://github.com/AI-Matrix-Engine/aidream/issues"},"dist":{"shasum":"96ae63e6b9ef6f2ddb3c89e6c63fa74281f80ce0","tarball":"https://registry.npmjs.org/@ai-matrx/realtime/-/realtime-0.7.5.tgz","fileCount":22,"integrity":"sha512-4uqhkPY30s/hxM4qcNYH8ablY8pAl+uw+ehk+I52EYeRCfo5k5WkXz5zQaYERMx0xhd+o3pJ7bhPXH0z3MtTjA==","signatures":[{"sig":"MEUCID+o56lBp7TNSbAhwWYQBmlsoCE8wRz8q2JIuzY7TL5mAiEA2Ks8lbn62+xX8Quxx0eZQ2h9c7dt8lsiS5znEyw4dz4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1825487},"main":"./dist/index.cjs","type":"module","_from":"file:/home/runner/work/_temp/ai-matrx-realtime-0.7.5.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./react":{"import":{"types":"./dist/react.d.ts","default":"./dist/react.js"},"require":{"types":"./dist/react.d.cts","default":"./dist/react.cjs"}},"./native":{"import":{"types":"./dist/native.d.ts","default":"./dist/native.js"},"require":{"types":"./dist/native.d.cts","default":"./dist/native.cjs"}},"./package.json":"./package.json"},"scripts":{"test":"vitest run","build":"pnpm clean && tsup","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","check:package":"pnpm build && publint && pnpm verify:tarball","verify:tarball":"node ./scripts/verify-tarball.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dcc287be-03b7-48cf-a591-574c75e8462b"}},"_resolved":"/home/runner/work/_temp/ai-matrx-realtime-0.7.5.tgz","_integrity":"sha512-4uqhkPY30s/hxM4qcNYH8ablY8pAl+uw+ehk+I52EYeRCfo5k5WkXz5zQaYERMx0xhd+o3pJ7bhPXH0z3MtTjA==","repository":{"url":"git+https://github.com/AI-Matrix-Engine/aidream.git","type":"git","directory":"apps/shared/realtime"},"_npmVersion":"12.0.2","description":"The ONE Supabase Realtime layer for Matrx clients: channel-naming registry, enforced channel lifecycle, echo suppression on by default, at-least-once delivery with idempotent dedup, a decoupled ordered handler queue, reconnect with jittered backoff and a ","directories":{},"sideEffects":false,"_nodeVersion":"24.20.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","jsdom":"^25.0.1","react":"^19.1.0","vitest":"^4.1.6","publint":"^0.3.24","react-dom":"^19.2.0","typescript":"^5.9.3","@types/node":"^22.20.0","@types/react":"^19.1.0","@types/react-dom":"^19.2.3","@arethetypeswrong/cli":"^0.18.5","@supabase/supabase-js":"^2.108.2","@testing-library/react":"^16.3.0"},"peerDependencies":{"react":">=18.0.0","react-native":">=0.76.0"},"peerDependenciesMeta":{"react":{"optional":true},"react-native":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/realtime_0.7.5_1788937243450_0.3648347442473088","host":"s3://npm-registry-packages-npm-production"}},"0.7.6":{"name":"@ai-matrx/realtime","version":"0.7.6","keywords":["supabase","realtime","broadcast","postgres-changes","presence","typing-indicator","echo-suppression","reconnect","backoff","ai-matrx","react","react-native"],"license":"MIT","_id":"@ai-matrx/realtime@0.7.6","maintainers":[{"name":"armanisadeghi","email":"arman@armansadeghi.com"}],"homepage":"https://github.com/AI-Matrix-Engine/aidream/tree/main/apps/shared/realtime#readme","bugs":{"url":"https://github.com/AI-Matrix-Engine/aidream/issues"},"dist":{"shasum":"8f6ce4f3c8464f5714ddbb0dbc91813facb836fd","tarball":"https://registry.npmjs.org/@ai-matrx/realtime/-/realtime-0.7.6.tgz","fileCount":24,"integrity":"sha512-bsO6rM2hdd7sZj69iyR95w/QUFed3OrqK2SmzUGXAL9+gQ3V+iFC5OicmZiyWFbtM5gDrLE+FE6afeNI3SrK4Q==","signatures":[{"sig":"MEUCIQDbm7geq/5LyMTgHQYLBrRg+q3q72KaUGuTb2M7ARf+oAIgFUj9/t46yoBSt2ZVWjZb59ZBNcsEWg254HqbooGjW9E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1825718},"main":"./dist/index.cjs","type":"module","_from":"file:/home/runner/work/_temp/ai-matrx-realtime-0.7.6.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./react":{"import":{"types":"./dist/react.d.ts","default":"./dist/react.js"},"require":{"types":"./dist/react.d.cts","default":"./dist/react.cjs"}},"./native":{"import":{"types":"./dist/native.d.ts","default":"./dist/native.js"},"require":{"types":"./dist/native.d.cts","default":"./dist/native.cjs"}},"./package.json":"./package.json"},"scripts":{"test":"vitest run","build":"pnpm clean && tsup","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","check:package":"pnpm build && publint && pnpm verify:tarball","verify:tarball":"node ./scripts/verify-tarball.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dcc287be-03b7-48cf-a591-574c75e8462b"}},"_resolved":"/home/runner/work/_temp/ai-matrx-realtime-0.7.6.tgz","_integrity":"sha512-bsO6rM2hdd7sZj69iyR95w/QUFed3OrqK2SmzUGXAL9+gQ3V+iFC5OicmZiyWFbtM5gDrLE+FE6afeNI3SrK4Q==","repository":{"url":"git+https://github.com/AI-Matrix-Engine/aidream.git","type":"git","directory":"apps/shared/realtime"},"_npmVersion":"12.0.2","description":"The ONE Supabase Realtime layer for Matrx clients: channel-naming registry, enforced channel lifecycle, echo suppression on by default, at-least-once delivery with idempotent dedup, a decoupled ordered handler queue, reconnect with jittered backoff and a ","directories":{},"sideEffects":false,"_nodeVersion":"24.20.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","jsdom":"^25.0.1","react":"^19.1.0","vitest":"^4.1.6","publint":"^0.3.24","react-dom":"^19.2.0","typescript":"^5.9.3","@types/node":"^22.20.0","@types/react":"^19.1.0","@types/react-dom":"^19.2.3","@arethetypeswrong/cli":"^0.18.5","@supabase/supabase-js":"^2.108.2","@testing-library/react":"^16.3.0"},"peerDependencies":{"react":">=18.0.0","react-native":">=0.76.0"},"peerDependenciesMeta":{"react":{"optional":true},"react-native":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/realtime_0.7.6_1789067299313_0.578163981970893","host":"s3://npm-registry-packages-npm-production"}},"0.7.7":{"name":"@ai-matrx/realtime","version":"0.7.7","keywords":["supabase","realtime","broadcast","postgres-changes","presence","typing-indicator","echo-suppression","reconnect","backoff","ai-matrx","react","react-native"],"license":"MIT","_id":"@ai-matrx/realtime@0.7.7","maintainers":[{"name":"armanisadeghi","email":"arman@armansadeghi.com"}],"homepage":"https://github.com/AI-Matrix-Engine/aidream/tree/main/apps/shared/realtime#readme","bugs":{"url":"https://github.com/AI-Matrix-Engine/aidream/issues"},"dist":{"shasum":"f1afc1fb891f857e2a4ca90fa5107ba75c593981","tarball":"https://registry.npmjs.org/@ai-matrx/realtime/-/realtime-0.7.7.tgz","fileCount":24,"integrity":"sha512-f2fH78E35b6FXNS2Me0YLQ2fOcHCYa9yW2s5K4kOUaZ+difbxAzbEEJQe+Iw85nGn68KxyclRp8gpdgJ7EPLFA==","signatures":[{"sig":"MEUCICd1b0FZnL0Dv2Zi4N22TC2KKqS/90CmkBdbwSb6emNKAiEAqwIhIe67Op1sYlAVke55Bt8i2SXigaTAHEg52Mh5YqQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1827904},"main":"./dist/index.cjs","type":"module","_from":"file:/home/runner/work/_temp/ai-matrx-realtime-0.7.7.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./react":{"import":{"types":"./dist/react.d.ts","default":"./dist/react.js"},"require":{"types":"./dist/react.d.cts","default":"./dist/react.cjs"}},"./native":{"import":{"types":"./dist/native.d.ts","default":"./dist/native.js"},"require":{"types":"./dist/native.d.cts","default":"./dist/native.cjs"}},"./package.json":"./package.json"},"scripts":{"test":"vitest run","build":"pnpm clean && tsup","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","check:package":"pnpm build && publint && pnpm verify:tarball","verify:tarball":"node ./scripts/verify-tarball.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dcc287be-03b7-48cf-a591-574c75e8462b"}},"_resolved":"/home/runner/work/_temp/ai-matrx-realtime-0.7.7.tgz","_integrity":"sha512-f2fH78E35b6FXNS2Me0YLQ2fOcHCYa9yW2s5K4kOUaZ+difbxAzbEEJQe+Iw85nGn68KxyclRp8gpdgJ7EPLFA==","repository":{"url":"git+https://github.com/AI-Matrix-Engine/aidream.git","type":"git","directory":"apps/shared/realtime"},"_npmVersion":"12.0.2","description":"The ONE Supabase Realtime layer for Matrx clients: channel-naming registry, enforced channel lifecycle, echo suppression on by default, at-least-once delivery with idempotent dedup, a decoupled ordered handler queue, reconnect with jittered backoff and a ","directories":{},"sideEffects":false,"_nodeVersion":"24.20.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","jsdom":"^25.0.1","react":"^19.1.0","vitest":"^4.1.6","publint":"^0.3.24","react-dom":"^19.2.0","typescript":"^5.9.3","@types/node":"^22.20.0","@types/react":"^19.1.0","@types/react-dom":"^19.2.3","@arethetypeswrong/cli":"^0.18.5","@supabase/supabase-js":"^2.108.2","@testing-library/react":"^16.3.0"},"peerDependencies":{"react":">=18.0.0","react-native":">=0.76.0"},"peerDependenciesMeta":{"react":{"optional":true},"react-native":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/realtime_0.7.7_1789069655510_0.12815035135719333","host":"s3://npm-registry-packages-npm-production"}},"0.7.8":{"name":"@ai-matrx/realtime","version":"0.7.8","keywords":["supabase","realtime","broadcast","postgres-changes","presence","typing-indicator","echo-suppression","reconnect","backoff","ai-matrx","react","react-native"],"license":"MIT","_id":"@ai-matrx/realtime@0.7.8","maintainers":[{"name":"armanisadeghi","email":"arman@armansadeghi.com"}],"homepage":"https://github.com/AI-Matrix-Engine/aidream/tree/main/apps/shared/realtime#readme","bugs":{"url":"https://github.com/AI-Matrix-Engine/aidream/issues"},"dist":{"shasum":"657bf20a1672d36ecbeb367651d438b5351c8335","tarball":"https://registry.npmjs.org/@ai-matrx/realtime/-/realtime-0.7.8.tgz","fileCount":24,"integrity":"sha512-dba+Fwdn+DnfC6+wz0gO7VUpantAvkSiRlDEqkoBGF6CS3o9++WzhKZsY2kgoov6mF0e7458Uqa/yGK4M+U4kA==","signatures":[{"sig":"MEUCIQD0MpwYY0lxGUydekchh0s/arXI612t27vs2nU0+1RQbQIgLALPqiMkO+q4WQ4kleGrD6nvC+pkxLdCWuR2T8y4iEw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1828116},"main":"./dist/index.cjs","type":"module","_from":"file:/home/runner/work/_temp/ai-matrx-realtime-0.7.8.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./react":{"import":{"types":"./dist/react.d.ts","default":"./dist/react.js"},"require":{"types":"./dist/react.d.cts","default":"./dist/react.cjs"}},"./native":{"import":{"types":"./dist/native.d.ts","default":"./dist/native.js"},"require":{"types":"./dist/native.d.cts","default":"./dist/native.cjs"}},"./package.json":"./package.json"},"scripts":{"test":"vitest run","build":"pnpm clean && tsup","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","check:package":"pnpm build && publint && pnpm verify:tarball","verify:tarball":"node ./scripts/verify-tarball.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dcc287be-03b7-48cf-a591-574c75e8462b"}},"_resolved":"/home/runner/work/_temp/ai-matrx-realtime-0.7.8.tgz","_integrity":"sha512-dba+Fwdn+DnfC6+wz0gO7VUpantAvkSiRlDEqkoBGF6CS3o9++WzhKZsY2kgoov6mF0e7458Uqa/yGK4M+U4kA==","repository":{"url":"git+https://github.com/AI-Matrix-Engine/aidream.git","type":"git","directory":"apps/shared/realtime"},"_npmVersion":"12.0.2","description":"The ONE Supabase Realtime layer for Matrx clients: channel-naming registry, enforced channel lifecycle, echo suppression on by default, at-least-once delivery with idempotent dedup, a decoupled ordered handler queue, reconnect with jittered backoff and a ","directories":{},"sideEffects":false,"_nodeVersion":"24.20.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","jsdom":"^25.0.1","react":"^19.1.0","vitest":"^4.1.6","publint":"^0.3.24","react-dom":"^19.2.0","typescript":"^5.9.3","@types/node":"^22.20.0","@types/react":"^19.1.0","@types/react-dom":"^19.2.3","@arethetypeswrong/cli":"^0.18.5","@supabase/supabase-js":"^2.108.2","@testing-library/react":"^16.3.0"},"peerDependencies":{"react":">=18.0.0","react-native":">=0.76.0"},"peerDependenciesMeta":{"react":{"optional":true},"react-native":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/realtime_0.7.8_1789082381793_0.06153765458532123","host":"s3://npm-registry-packages-npm-production"}},"0.7.9":{"name":"@ai-matrx/realtime","version":"0.7.9","keywords":["supabase","realtime","broadcast","postgres-changes","presence","typing-indicator","echo-suppression","reconnect","backoff","ai-matrx","react","react-native"],"license":"MIT","_id":"@ai-matrx/realtime@0.7.9","maintainers":[{"name":"armanisadeghi","email":"arman@armansadeghi.com"}],"homepage":"https://github.com/AI-Matrix-Engine/aidream/tree/main/apps/shared/realtime#readme","bugs":{"url":"https://github.com/AI-Matrix-Engine/aidream/issues"},"dist":{"shasum":"c5edeee73f192b58da942df0edf6ee4caa2a6bfa","tarball":"https://registry.npmjs.org/@ai-matrx/realtime/-/realtime-0.7.9.tgz","fileCount":24,"integrity":"sha512-AXxTa08cRlylPyRvWS20FWD6bC2nBdnAooW4AV+0ILrOdsTYJaxyRjTvnLbjl19ab6R7poMtlQmZwQvbrLmxyg==","signatures":[{"sig":"MEQCIFilaySnd3qaC+uuHavDk9v9V0jRPnMyCa8JD7lmlOIpAiAO1EbF2EqtekUoKYRX80o1l6sKt1cAKyh15MCbBwecZw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1848500},"main":"./dist/index.cjs","type":"module","_from":"file:/home/runner/work/_temp/ai-matrx-realtime-0.7.9.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./react":{"import":{"types":"./dist/react.d.ts","default":"./dist/react.js"},"require":{"types":"./dist/react.d.cts","default":"./dist/react.cjs"}},"./native":{"import":{"types":"./dist/native.d.ts","default":"./dist/native.js"},"require":{"types":"./dist/native.d.cts","default":"./dist/native.cjs"}},"./package.json":"./package.json"},"scripts":{"test":"vitest run","build":"pnpm clean && tsup","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","check:package":"pnpm build && publint && pnpm verify:tarball","verify:tarball":"node ./scripts/verify-tarball.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dcc287be-03b7-48cf-a591-574c75e8462b"}},"_resolved":"/home/runner/work/_temp/ai-matrx-realtime-0.7.9.tgz","_integrity":"sha512-AXxTa08cRlylPyRvWS20FWD6bC2nBdnAooW4AV+0ILrOdsTYJaxyRjTvnLbjl19ab6R7poMtlQmZwQvbrLmxyg==","repository":{"url":"git+https://github.com/AI-Matrix-Engine/aidream.git","type":"git","directory":"apps/shared/realtime"},"_npmVersion":"12.0.2","description":"The ONE Supabase Realtime layer for Matrx clients: channel-naming registry, enforced channel lifecycle, echo suppression on by default, at-least-once delivery with idempotent dedup, a decoupled ordered handler queue, reconnect with jittered backoff and a ","directories":{},"sideEffects":false,"_nodeVersion":"24.20.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","jsdom":"^25.0.1","react":"^19.1.0","vitest":"^4.1.6","publint":"^0.3.24","react-dom":"^19.2.0","typescript":"^5.9.3","@types/node":"^22.20.0","@types/react":"^19.1.0","@types/react-dom":"^19.2.3","@arethetypeswrong/cli":"^0.18.5","@supabase/supabase-js":"^2.108.2","@testing-library/react":"^16.3.0"},"peerDependencies":{"react":">=18.0.0","react-native":">=0.76.0"},"peerDependenciesMeta":{"react":{"optional":true},"react-native":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/realtime_0.7.9_1789169746401_0.5347292250314013","host":"s3://npm-registry-packages-npm-production"}},"0.7.10":{"name":"@ai-matrx/realtime","version":"0.7.10","keywords":["supabase","realtime","broadcast","postgres-changes","presence","typing-indicator","echo-suppression","reconnect","backoff","ai-matrx","react","react-native"],"license":"MIT","_id":"@ai-matrx/realtime@0.7.10","maintainers":[{"name":"armanisadeghi","email":"arman@armansadeghi.com"}],"homepage":"https://github.com/AI-Matrix-Engine/aidream/tree/main/apps/shared/realtime#readme","bugs":{"url":"https://github.com/AI-Matrix-Engine/aidream/issues"},"dist":{"shasum":"16d09da7fe0dca3be8d4d6eeb445f7334f4ab5d0","tarball":"https://registry.npmjs.org/@ai-matrx/realtime/-/realtime-0.7.10.tgz","fileCount":24,"integrity":"sha512-bmPzCPXo6wBnCc/vYczRxK4dKByRmTfzu5SrcdJHH65C915b1xYujCKC5KmKzVDh7PqF4r0BbOFfYJNSRTYITQ==","signatures":[{"sig":"MEQCICy1KvvBZe0ElCu+a41ZIpdYYbCk8kOiMUG3W+87RqBMAiB0GEsmwOXDMihOx7wka9YRrW3Cm6QYO4e2d1+XtBDi0A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1848780},"main":"./dist/index.cjs","type":"module","_from":"file:/home/runner/work/_temp/ai-matrx-realtime-0.7.10.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./react":{"import":{"types":"./dist/react.d.ts","default":"./dist/react.js"},"require":{"types":"./dist/react.d.cts","default":"./dist/react.cjs"}},"./native":{"import":{"types":"./dist/native.d.ts","default":"./dist/native.js"},"require":{"types":"./dist/native.d.cts","default":"./dist/native.cjs"}},"./package.json":"./package.json"},"scripts":{"test":"vitest run","build":"pnpm clean && tsup","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","check:package":"pnpm build && node ../scripts/check-exports-agreement.mjs && publint && pnpm verify:tarball","verify:tarball":"node ./scripts/verify-tarball.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dcc287be-03b7-48cf-a591-574c75e8462b"}},"_resolved":"/home/runner/work/_temp/ai-matrx-realtime-0.7.10.tgz","_integrity":"sha512-bmPzCPXo6wBnCc/vYczRxK4dKByRmTfzu5SrcdJHH65C915b1xYujCKC5KmKzVDh7PqF4r0BbOFfYJNSRTYITQ==","repository":{"url":"git+https://github.com/AI-Matrix-Engine/aidream.git","type":"git","directory":"apps/shared/realtime"},"_npmVersion":"12.0.2","description":"The ONE Supabase Realtime layer for Matrx clients: channel-naming registry, enforced channel lifecycle, echo suppression on by default, at-least-once delivery with idempotent dedup, a decoupled ordered handler queue, reconnect with jittered backoff and a ","directories":{},"sideEffects":false,"_nodeVersion":"24.20.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","jsdom":"^25.0.1","react":"^19.1.0","vitest":"^4.1.6","publint":"^0.3.24","react-dom":"^19.2.0","typescript":"^5.9.3","@types/node":"^22.20.0","@types/react":"^19.1.0","@types/react-dom":"^19.2.3","@arethetypeswrong/cli":"^0.18.5","@supabase/supabase-js":"^2.108.2","@testing-library/react":"^16.3.0"},"peerDependencies":{"react":">=18.0.0","react-native":">=0.76.0"},"peerDependenciesMeta":{"react":{"optional":true},"react-native":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/realtime_0.7.10_1789278082868_0.6089868078760075","host":"s3://npm-registry-packages-npm-production"}},"0.7.11":{"name":"@ai-matrx/realtime","version":"0.7.11","keywords":["supabase","realtime","broadcast","postgres-changes","presence","typing-indicator","echo-suppression","reconnect","backoff","ai-matrx","react","react-native"],"license":"MIT","_id":"@ai-matrx/realtime@0.7.11","maintainers":[{"name":"armanisadeghi","email":"arman@armansadeghi.com"}],"homepage":"https://github.com/AI-Matrix-Engine/aidream/tree/main/apps/shared/realtime#readme","bugs":{"url":"https://github.com/AI-Matrix-Engine/aidream/issues"},"dist":{"shasum":"d6bc338febe58baaa4dacd90d33dd2d528bedf0d","tarball":"https://registry.npmjs.org/@ai-matrx/realtime/-/realtime-0.7.11.tgz","fileCount":24,"integrity":"sha512-baKHE5x7jsc5Auz73OHg8KIi0C7nPkMdItu1WzYne95LRDZ2TNBRbm75Xppc+/8ySecVznZBe5+WG7Btu/qfIg==","signatures":[{"sig":"MEUCICwNVrO4M3O8Dd5kLXZ3B2tl4QjVGETpwf8zWsTodUrsAiEA2f3TFm+eT5Tz//jQvqW4pUL6Es6gxzjKoNwIp6K3LE0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1848781},"main":"./dist/index.cjs","type":"module","_from":"file:/home/runner/work/_temp/ai-matrx-realtime-0.7.11.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./react":{"import":{"types":"./dist/react.d.ts","default":"./dist/react.js"},"require":{"types":"./dist/react.d.cts","default":"./dist/react.cjs"}},"./native":{"import":{"types":"./dist/native.d.ts","default":"./dist/native.js"},"require":{"types":"./dist/native.d.cts","default":"./dist/native.cjs"}},"./package.json":"./package.json"},"scripts":{"test":"vitest run","build":"pnpm clean && tsup","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","check:package":"pnpm build && node ../scripts/check-exports-agreement.mjs && publint && pnpm verify:tarball","verify:tarball":"node ./scripts/verify-tarball.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dcc287be-03b7-48cf-a591-574c75e8462b"}},"_resolved":"/home/runner/work/_temp/ai-matrx-realtime-0.7.11.tgz","_integrity":"sha512-baKHE5x7jsc5Auz73OHg8KIi0C7nPkMdItu1WzYne95LRDZ2TNBRbm75Xppc+/8ySecVznZBe5+WG7Btu/qfIg==","repository":{"url":"git+https://github.com/AI-Matrix-Engine/aidream.git","type":"git","directory":"apps/shared/realtime"},"_npmVersion":"12.0.2","description":"The ONE Supabase Realtime layer for Matrx clients: channel-naming registry, enforced channel lifecycle, echo suppression on by default, at-least-once delivery with idempotent dedup, a decoupled ordered handler queue, reconnect with jittered backoff and a ","directories":{},"sideEffects":false,"_nodeVersion":"24.20.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","jsdom":"^25.0.1","react":"^19.1.0","vitest":"^4.1.6","publint":"^0.3.24","react-dom":"^19.2.0","typescript":"^5.9.3","@types/node":"^22.20.0","@types/react":"^19.1.0","@types/react-dom":"^19.2.3","@arethetypeswrong/cli":"^0.18.5","@supabase/supabase-js":"^2.108.2","@testing-library/react":"^16.3.0"},"peerDependencies":{"react":">=18.0.0","react-native":">=0.76.0"},"peerDependenciesMeta":{"react":{"optional":true},"react-native":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/realtime_0.7.11_1789283718697_0.8415611624231845","host":"s3://npm-registry-packages-npm-production"}},"0.7.12":{"name":"@ai-matrx/realtime","version":"0.7.12","keywords":["supabase","realtime","broadcast","postgres-changes","presence","typing-indicator","echo-suppression","reconnect","backoff","ai-matrx","react","react-native"],"license":"MIT","_id":"@ai-matrx/realtime@0.7.12","maintainers":[{"name":"armanisadeghi","email":"arman@armansadeghi.com"}],"homepage":"https://github.com/AI-Matrix-Engine/aidream/tree/main/apps/shared/realtime#readme","bugs":{"url":"https://github.com/AI-Matrix-Engine/aidream/issues"},"dist":{"shasum":"849671ee6b4649f876d27c2aa97444489760876d","tarball":"https://registry.npmjs.org/@ai-matrx/realtime/-/realtime-0.7.12.tgz","fileCount":24,"integrity":"sha512-Q8xXZhTLbh4kLeDE2BfyOHfOegMl/OH+vHhTSwZwfZDrQDiWxfdleQ/9dvU3/7Fn6jQMMJxjwgTNgFFii47aGg==","signatures":[{"sig":"MEQCIGSHWW1XoR371MyjsN9GT3Vdz36TDVIuiex5Lg7OP8Q7AiA5MqAyRxXv8/M1NpqjRAFwROok4252i0Y+uXwMBUJr8A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1849246},"main":"./dist/index.cjs","type":"module","_from":"file:/home/runner/work/_temp/ai-matrx-realtime-0.7.12.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./react":{"import":{"types":"./dist/react.d.ts","default":"./dist/react.js"},"require":{"types":"./dist/react.d.cts","default":"./dist/react.cjs"}},"./native":{"import":{"types":"./dist/native.d.ts","default":"./dist/native.js"},"require":{"types":"./dist/native.d.cts","default":"./dist/native.cjs"}},"./package.json":"./package.json"},"scripts":{"test":"vitest run","build":"pnpm clean && tsup","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","check:package":"pnpm build && node ../scripts/check-exports-agreement.mjs && publint && pnpm verify:tarball","verify:tarball":"node ./scripts/verify-tarball.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dcc287be-03b7-48cf-a591-574c75e8462b"}},"_resolved":"/home/runner/work/_temp/ai-matrx-realtime-0.7.12.tgz","_integrity":"sha512-Q8xXZhTLbh4kLeDE2BfyOHfOegMl/OH+vHhTSwZwfZDrQDiWxfdleQ/9dvU3/7Fn6jQMMJxjwgTNgFFii47aGg==","repository":{"url":"git+https://github.com/AI-Matrix-Engine/aidream.git","type":"git","directory":"apps/shared/realtime"},"_npmVersion":"12.0.2","description":"The ONE Supabase Realtime layer for Matrx clients: channel-naming registry, enforced channel lifecycle, echo suppression on by default, at-least-once delivery with idempotent dedup, a decoupled ordered handler queue, reconnect with jittered backoff and a ","directories":{},"sideEffects":false,"_nodeVersion":"24.20.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","jsdom":"^25.0.1","react":"^19.1.0","vitest":"^4.1.6","publint":"^0.3.24","react-dom":"^19.2.0","typescript":"^5.9.3","@types/node":"^22.20.0","@types/react":"^19.1.0","@types/react-dom":"^19.2.3","@arethetypeswrong/cli":"^0.18.5","@supabase/supabase-js":"^2.108.2","@testing-library/react":"^16.3.0"},"peerDependencies":{"react":">=18.0.0","react-native":">=0.76.0"},"peerDependenciesMeta":{"react":{"optional":true},"react-native":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/realtime_0.7.12_1789284338835_0.935137805388651","host":"s3://npm-registry-packages-npm-production"}},"0.7.13":{"name":"@ai-matrx/realtime","version":"0.7.13","keywords":["supabase","realtime","broadcast","postgres-changes","presence","typing-indicator","echo-suppression","reconnect","backoff","ai-matrx","react","react-native"],"license":"MIT","_id":"@ai-matrx/realtime@0.7.13","maintainers":[{"name":"armanisadeghi","email":"arman@armansadeghi.com"}],"homepage":"https://github.com/AI-Matrix-Engine/aidream/tree/main/apps/shared/realtime#readme","bugs":{"url":"https://github.com/AI-Matrix-Engine/aidream/issues"},"dist":{"shasum":"5b85c0c874138465f77665b40c652392c001d2a7","tarball":"https://registry.npmjs.org/@ai-matrx/realtime/-/realtime-0.7.13.tgz","fileCount":24,"integrity":"sha512-FhRtynY5Mmi9zuYtAVrQr755af4IXaQy4aTEk7NIStnKQvqXvgeXX5Hldbfpl4bOYuuG0JhIJdhvpqK/5vYOGg==","signatures":[{"sig":"MEUCIQC9czOHYAYLk+8ybJ+kMRawNhm5mMLzkecjrGiq78gmYwIgMZurQEYCzKriHuyOHfgMkdSEqHJwie8lMwpw00BuJ+0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1849476},"main":"./dist/index.cjs","type":"module","_from":"file:/home/runner/work/_temp/ai-matrx-realtime-0.7.13.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./react":{"import":{"types":"./dist/react.d.ts","default":"./dist/react.js"},"require":{"types":"./dist/react.d.cts","default":"./dist/react.cjs"}},"./native":{"import":{"types":"./dist/native.d.ts","default":"./dist/native.js"},"require":{"types":"./dist/native.d.cts","default":"./dist/native.cjs"}},"./package.json":"./package.json"},"scripts":{"test":"vitest run","build":"pnpm clean && tsup","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","check:package":"pnpm build && node ../scripts/check-exports-agreement.mjs && publint && pnpm verify:tarball","verify:tarball":"node ./scripts/verify-tarball.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dcc287be-03b7-48cf-a591-574c75e8462b"}},"_resolved":"/home/runner/work/_temp/ai-matrx-realtime-0.7.13.tgz","_integrity":"sha512-FhRtynY5Mmi9zuYtAVrQr755af4IXaQy4aTEk7NIStnKQvqXvgeXX5Hldbfpl4bOYuuG0JhIJdhvpqK/5vYOGg==","repository":{"url":"git+https://github.com/AI-Matrix-Engine/aidream.git","type":"git","directory":"apps/shared/realtime"},"_npmVersion":"12.0.2","description":"The ONE Supabase Realtime layer for Matrx clients: channel-naming registry, enforced channel lifecycle, echo suppression on by default, at-least-once delivery with idempotent dedup, a decoupled ordered handler queue, reconnect with jittered backoff and a ","directories":{},"sideEffects":false,"_nodeVersion":"24.20.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","jsdom":"^30.0.1","react":"^19.3.0","vitest":"^5.0.0","publint":"^0.3.24","react-dom":"^19.3.0","typescript":"^5.9.3","@types/node":"^26.5.1","@types/react":"19.3.0","@types/react-dom":"19.3.0","@arethetypeswrong/cli":"^0.18.5","@supabase/supabase-js":"^2.116.0","@testing-library/react":"^16.3.3"},"peerDependencies":{"react":">=18.0.0","react-native":">=0.76.0"},"peerDependenciesMeta":{"react":{"optional":true},"react-native":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/realtime_0.7.13_1789337028548_0.8074781295840519","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"@ai-matrx/realtime","version":"0.8.0","keywords":["supabase","realtime","broadcast","postgres-changes","presence","typing-indicator","echo-suppression","reconnect","backoff","ai-matrx","react","react-native"],"license":"MIT","_id":"@ai-matrx/realtime@0.8.0","maintainers":[{"name":"armanisadeghi","email":"arman@armansadeghi.com"}],"homepage":"https://github.com/AI-Matrix-Engine/aidream/tree/main/apps/shared/realtime#readme","bugs":{"url":"https://github.com/AI-Matrix-Engine/aidream/issues"},"dist":{"shasum":"2f9d02d0a86021f77d898384e1bd12bc170ec55f","tarball":"https://registry.npmjs.org/@ai-matrx/realtime/-/realtime-0.8.0.tgz","fileCount":24,"integrity":"sha512-7Ui7fh6Mc/RaxWtlYaBAE+c8t2UHVVvyPAnlLWDErtOKpKMfSXcGfThcQTEPsHQ/sGhnBZ1Y096pOJN8VzuAug==","signatures":[{"sig":"MEYCIQCn51PdYoK+N6LyBBzMKXoKLXa3Lun/Wihx6JRnnJKJMQIhAN70ab+YwYwjU1d1X9W1VZewXYEn4xZ2WuZ6OSDMLkAU","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1956230},"main":"./dist/index.cjs","type":"module","_from":"file:/home/runner/work/_temp/ai-matrx-realtime-0.8.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./react":{"import":{"types":"./dist/react.d.ts","default":"./dist/react.js"},"require":{"types":"./dist/react.d.cts","default":"./dist/react.cjs"}},"./native":{"import":{"types":"./dist/native.d.ts","default":"./dist/native.js"},"require":{"types":"./dist/native.d.cts","default":"./dist/native.cjs"}},"./package.json":"./package.json"},"scripts":{"test":"vitest run","build":"pnpm clean && tsup","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","check:package":"pnpm build && node ../scripts/check-exports-agreement.mjs && publint && pnpm verify:tarball","verify:tarball":"node ./scripts/verify-tarball.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dcc287be-03b7-48cf-a591-574c75e8462b"}},"_resolved":"/home/runner/work/_temp/ai-matrx-realtime-0.8.0.tgz","_integrity":"sha512-7Ui7fh6Mc/RaxWtlYaBAE+c8t2UHVVvyPAnlLWDErtOKpKMfSXcGfThcQTEPsHQ/sGhnBZ1Y096pOJN8VzuAug==","repository":{"url":"git+https://github.com/AI-Matrix-Engine/aidream.git","type":"git","directory":"apps/shared/realtime"},"_npmVersion":"12.0.2","description":"The ONE Supabase Realtime layer for Matrx clients: channel-naming registry, enforced channel lifecycle, echo suppression on by default, at-least-once delivery with idempotent dedup, a decoupled ordered handler queue, reconnect with jittered backoff and a ","directories":{},"sideEffects":false,"_nodeVersion":"24.20.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","jsdom":"^30.0.1","react":"^19.3.0","vitest":"^5.0.0","publint":"^0.3.24","react-dom":"^19.3.0","typescript":"^5.9.3","@types/node":"^26.5.1","@types/react":"19.3.0","@types/react-dom":"19.3.0","@arethetypeswrong/cli":"^0.18.5","@supabase/supabase-js":"^2.116.0","@testing-library/react":"^16.3.3"},"peerDependencies":{"react":">=18.0.0","react-native":">=0.76.0"},"peerDependenciesMeta":{"react":{"optional":true},"react-native":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/realtime_0.8.0_1789366727367_0.11889307537823046","host":"s3://npm-registry-packages-npm-production"}},"0.8.1":{"name":"@ai-matrx/realtime","version":"0.8.1","keywords":["supabase","realtime","broadcast","postgres-changes","presence","typing-indicator","echo-suppression","reconnect","backoff","ai-matrx","react","react-native"],"license":"MIT","_id":"@ai-matrx/realtime@0.8.1","maintainers":[{"name":"armanisadeghi","email":"arman@armansadeghi.com"}],"homepage":"https://github.com/AI-Matrix-Engine/aidream/tree/main/apps/shared/realtime#readme","bugs":{"url":"https://github.com/AI-Matrix-Engine/aidream/issues"},"dist":{"shasum":"76fa3a3fdf09df45a69656f7d1d3c21a83543531","tarball":"https://registry.npmjs.org/@ai-matrx/realtime/-/realtime-0.8.1.tgz","fileCount":24,"integrity":"sha512-0SFABYpOOl4hDHeiD4YxNyOsXm8lCm8HLAftL8F+EOaHB5JneyjabaE+d3ZncqbGDtXwPMt8yUcgQwi4fUu41Q==","signatures":[{"sig":"MEUCIDd2uJlW0ysL42d8+gC9yCtM+ID4wDj9UtuVD9R4W4u3AiEAlle2i8re98F5U7MYpa6USiMi/b6jgl1vyWsVwml+QsQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1991008},"main":"./dist/index.cjs","type":"module","_from":"file:/home/runner/work/_temp/ai-matrx-realtime-0.8.1.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./react":{"import":{"types":"./dist/react.d.ts","default":"./dist/react.js"},"require":{"types":"./dist/react.d.cts","default":"./dist/react.cjs"}},"./native":{"import":{"types":"./dist/native.d.ts","default":"./dist/native.js"},"require":{"types":"./dist/native.d.cts","default":"./dist/native.cjs"}},"./package.json":"./package.json"},"scripts":{"test":"vitest run","build":"pnpm clean && tsup","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","check:package":"pnpm build && node ../scripts/check-exports-agreement.mjs && publint && pnpm verify:tarball","verify:tarball":"node ./scripts/verify-tarball.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dcc287be-03b7-48cf-a591-574c75e8462b"}},"_resolved":"/home/runner/work/_temp/ai-matrx-realtime-0.8.1.tgz","_integrity":"sha512-0SFABYpOOl4hDHeiD4YxNyOsXm8lCm8HLAftL8F+EOaHB5JneyjabaE+d3ZncqbGDtXwPMt8yUcgQwi4fUu41Q==","repository":{"url":"git+https://github.com/AI-Matrix-Engine/aidream.git","type":"git","directory":"apps/shared/realtime"},"_npmVersion":"12.0.2","description":"The ONE Supabase Realtime layer for Matrx clients: channel-naming registry, enforced channel lifecycle, echo suppression on by default, at-least-once delivery with idempotent dedup, a decoupled ordered handler queue, reconnect with jittered backoff and a ","directories":{},"sideEffects":false,"_nodeVersion":"24.20.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","jsdom":"^30.0.1","react":"^19.3.0","vitest":"^5.0.0","publint":"^0.3.24","react-dom":"^19.3.0","typescript":"^5.9.3","@types/node":"^26.5.1","@types/react":"19.3.0","@types/react-dom":"19.3.0","@arethetypeswrong/cli":"^0.18.5","@supabase/supabase-js":"^2.116.0","@testing-library/react":"^16.3.3"},"peerDependencies":{"react":">=18.0.0","react-native":">=0.76.0"},"peerDependenciesMeta":{"react":{"optional":true},"react-native":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/realtime_0.8.1_1789367913741_0.8604959588579526","host":"s3://npm-registry-packages-npm-production"}},"0.8.2":{"name":"@ai-matrx/realtime","version":"0.8.2","keywords":["supabase","realtime","broadcast","postgres-changes","presence","typing-indicator","echo-suppression","reconnect","backoff","ai-matrx","react","react-native"],"license":"MIT","_id":"@ai-matrx/realtime@0.8.2","maintainers":[{"name":"armanisadeghi","email":"arman@armansadeghi.com"}],"homepage":"https://github.com/AI-Matrix-Engine/aidream/tree/main/apps/shared/realtime#readme","bugs":{"url":"https://github.com/AI-Matrix-Engine/aidream/issues"},"dist":{"shasum":"801aaea0fe4f96e171f9368cabdb8da715bc8e2f","tarball":"https://registry.npmjs.org/@ai-matrx/realtime/-/realtime-0.8.2.tgz","fileCount":24,"integrity":"sha512-NHCHRDBNrcDLIb04f1ID6rxHt4o0pSqklX/MpJ8sGgnH0La51Qc5zg1edqdzf25grpSS5kHt4sgsuk4CQRyBIA==","signatures":[{"sig":"MEUCIGdUoBAhtuaxKxgzco3ewgKUzLMQoYFFlq5vgY4yWF8fAiEA24Y5Tyi15rlhqAP4jFnC+RyGqEuncZ3YyZCmBmLHGaw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1996844},"main":"./dist/index.cjs","type":"module","_from":"file:/home/runner/work/_temp/ai-matrx-realtime-0.8.2.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./react":{"import":{"types":"./dist/react.d.ts","default":"./dist/react.js"},"require":{"types":"./dist/react.d.cts","default":"./dist/react.cjs"}},"./native":{"import":{"types":"./dist/native.d.ts","default":"./dist/native.js"},"require":{"types":"./dist/native.d.cts","default":"./dist/native.cjs"}},"./package.json":"./package.json"},"scripts":{"test":"vitest run","build":"pnpm clean && tsup","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","check:package":"pnpm build && node ../scripts/check-exports-agreement.mjs && publint && pnpm verify:tarball","verify:tarball":"node ./scripts/verify-tarball.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dcc287be-03b7-48cf-a591-574c75e8462b"}},"_resolved":"/home/runner/work/_temp/ai-matrx-realtime-0.8.2.tgz","_integrity":"sha512-NHCHRDBNrcDLIb04f1ID6rxHt4o0pSqklX/MpJ8sGgnH0La51Qc5zg1edqdzf25grpSS5kHt4sgsuk4CQRyBIA==","repository":{"url":"git+https://github.com/AI-Matrix-Engine/aidream.git","type":"git","directory":"apps/shared/realtime"},"_npmVersion":"12.0.2","description":"The ONE Supabase Realtime layer for Matrx clients: channel-naming registry, enforced channel lifecycle, echo suppression on by default, at-least-once delivery with idempotent dedup, a decoupled ordered handler queue, reconnect with jittered backoff and a ","directories":{},"sideEffects":false,"_nodeVersion":"24.20.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","jsdom":"^30.0.1","react":"^19.3.0","vitest":"^5.0.0","publint":"^0.3.24","react-dom":"^19.3.0","typescript":"^5.9.3","@types/node":"^26.5.1","@types/react":"19.3.0","@types/react-dom":"19.3.0","@arethetypeswrong/cli":"^0.18.5","@supabase/supabase-js":"^2.116.0","@testing-library/react":"^16.3.3"},"peerDependencies":{"react":">=18.0.0","react-native":">=0.76.0"},"peerDependenciesMeta":{"react":{"optional":true},"react-native":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/realtime_0.8.2_1789369341548_0.8997458633005575","host":"s3://npm-registry-packages-npm-production"}},"0.8.3":{"name":"@ai-matrx/realtime","version":"0.8.3","keywords":["supabase","realtime","broadcast","postgres-changes","presence","typing-indicator","echo-suppression","reconnect","backoff","ai-matrx","react","react-native"],"license":"MIT","_id":"@ai-matrx/realtime@0.8.3","maintainers":[{"name":"armanisadeghi","email":"arman@armansadeghi.com"}],"homepage":"https://github.com/AI-Matrix-Engine/aidream/tree/main/apps/shared/realtime#readme","bugs":{"url":"https://github.com/AI-Matrix-Engine/aidream/issues"},"dist":{"shasum":"22006882c4ce7b19260d485a73e25159b0833462","tarball":"https://registry.npmjs.org/@ai-matrx/realtime/-/realtime-0.8.3.tgz","fileCount":24,"integrity":"sha512-Y1IeP0fOxKmGvxQTv1Q3iTHNRZH4FzgZlcav0R2vRp+nQsyy/jhUkViR2RUXHPoLgMnsWj+tbxULv2cwME6Dog==","signatures":[{"sig":"MEYCIQCaTjaYMHRMAxNKINCv2xkaL9rMwgPoamzESQAZz+gpLgIhAPK1/swjl4Xd02c3Bs4h9/WaB+K4abtIEIYHx8ZIAZl6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIH79k6DNHXeNgKTRdQ84S13vGvNoaRN8+oChodgy158dAiEAnTRzcbM6pKwMYxTlJcx3E4X/TA4DaveRpGdgfuiq7sk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1997074},"main":"./dist/index.cjs","type":"module","_from":"file:/home/runner/work/_temp/ai-matrx-realtime-0.8.3.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./react":{"import":{"types":"./dist/react.d.ts","default":"./dist/react.js"},"require":{"types":"./dist/react.d.cts","default":"./dist/react.cjs"}},"./native":{"import":{"types":"./dist/native.d.ts","default":"./dist/native.js"},"require":{"types":"./dist/native.d.cts","default":"./dist/native.cjs"}},"./package.json":"./package.json"},"scripts":{"test":"vitest run","build":"pnpm clean && tsup","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","check:package":"pnpm build && node ../scripts/check-exports-agreement.mjs && publint && pnpm verify:tarball","verify:tarball":"node ./scripts/verify-tarball.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dcc287be-03b7-48cf-a591-574c75e8462b"}},"_resolved":"/home/runner/work/_temp/ai-matrx-realtime-0.8.3.tgz","_integrity":"sha512-Y1IeP0fOxKmGvxQTv1Q3iTHNRZH4FzgZlcav0R2vRp+nQsyy/jhUkViR2RUXHPoLgMnsWj+tbxULv2cwME6Dog==","repository":{"url":"git+https://github.com/AI-Matrix-Engine/aidream.git","type":"git","directory":"apps/shared/realtime"},"_npmVersion":"12.0.2","description":"The ONE Supabase Realtime layer for Matrx clients: channel-naming registry, enforced channel lifecycle, echo suppression on by default, at-least-once delivery with idempotent dedup, a decoupled ordered handler queue, reconnect with jittered backoff and a ","directories":{},"sideEffects":false,"_nodeVersion":"24.20.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","jsdom":"^30.0.1","react":"^19.3.0","vitest":"^5.0.0","publint":"^0.3.24","react-dom":"^19.3.0","typescript":"^5.9.3","@types/node":"^26.5.1","@types/react":"19.3.0","@types/react-dom":"19.3.0","@arethetypeswrong/cli":"^0.18.5","@supabase/supabase-js":"^2.116.0","@testing-library/react":"^16.3.3"},"peerDependencies":{"react":">=18.0.0","react-native":">=0.76.0"},"peerDependenciesMeta":{"react":{"optional":true},"react-native":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/realtime_0.8.3_1789417156969_0.07551542022832991","host":"s3://npm-registry-packages-npm-production"}},"0.8.4":{"name":"@ai-matrx/realtime","version":"0.8.4","keywords":["supabase","realtime","broadcast","postgres-changes","presence","typing-indicator","echo-suppression","reconnect","backoff","ai-matrx","react","react-native"],"license":"MIT","_id":"@ai-matrx/realtime@0.8.4","maintainers":[{"name":"armanisadeghi","email":"arman@armansadeghi.com"}],"homepage":"https://github.com/AI-Matrix-Engine/aidream/tree/main/apps/shared/realtime#readme","bugs":{"url":"https://github.com/AI-Matrix-Engine/aidream/issues"},"dist":{"shasum":"fb34a6b90aa411acdb5b5d0bdebe20f25dd39465","tarball":"https://registry.npmjs.org/@ai-matrx/realtime/-/realtime-0.8.4.tgz","fileCount":24,"integrity":"sha512-MfJj6sR1gwingnRkMG7p0jj1FMK+dhnMaDZx8ArVUBRwgPUW1JJuH2vrutH0scArJFYWTZzA/I8ACgm+u3Qmxg==","signatures":[{"sig":"MEUCIQDnJ+ixas2e+WETLUTeUKvvGijZEApBuQg7ThYBpp10vwIgOUX+ym7gkjauyeEI/m0emOzHfCKGKEzgpxv6LQfI67I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDj5JHglW5HZ5p0xbdOEvN+Dzy+RrjkBe9tKqPYbrjkmAIgRb/hSAq5HCwHOFWr60BKZxJpAohx7hLjGexUPL17Ot0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1999632},"main":"./dist/index.cjs","type":"module","_from":"file:/home/runner/work/_temp/ai-matrx-realtime-0.8.4.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./react":{"import":{"types":"./dist/react.d.ts","default":"./dist/react.js"},"require":{"types":"./dist/react.d.cts","default":"./dist/react.cjs"}},"./native":{"import":{"types":"./dist/native.d.ts","default":"./dist/native.js"},"require":{"types":"./dist/native.d.cts","default":"./dist/native.cjs"}},"./package.json":"./package.json"},"scripts":{"test":"vitest run","build":"pnpm clean && tsup","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","check:package":"pnpm build && node ../scripts/check-exports-agreement.mjs && publint && pnpm verify:tarball","verify:tarball":"node ./scripts/verify-tarball.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dcc287be-03b7-48cf-a591-574c75e8462b"}},"_resolved":"/home/runner/work/_temp/ai-matrx-realtime-0.8.4.tgz","_integrity":"sha512-MfJj6sR1gwingnRkMG7p0jj1FMK+dhnMaDZx8ArVUBRwgPUW1JJuH2vrutH0scArJFYWTZzA/I8ACgm+u3Qmxg==","repository":{"url":"git+https://github.com/AI-Matrix-Engine/aidream.git","type":"git","directory":"apps/shared/realtime"},"_npmVersion":"12.0.2","description":"The ONE Supabase Realtime layer for Matrx clients: channel-naming registry, enforced channel lifecycle, echo suppression on by default, at-least-once delivery with idempotent dedup, a decoupled ordered handler queue, reconnect with jittered backoff and a ","directories":{},"sideEffects":false,"_nodeVersion":"24.20.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","jsdom":"^30.0.1","react":"^19.3.0","vitest":"^5.0.0","publint":"^0.3.24","react-dom":"^19.3.0","typescript":"^5.9.3","@types/node":"^26.5.1","@types/react":"19.3.0","@types/react-dom":"19.3.0","@arethetypeswrong/cli":"^0.18.5","@supabase/supabase-js":"^2.116.0","@testing-library/react":"^16.3.3"},"peerDependencies":{"react":">=18.0.0","react-native":">=0.76.0"},"peerDependenciesMeta":{"react":{"optional":true},"react-native":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/realtime_0.8.4_1789550880317_0.3099343302899511","host":"s3://npm-registry-packages-npm-production"}},"0.8.5":{"name":"@ai-matrx/realtime","version":"0.8.5","keywords":["supabase","realtime","broadcast","postgres-changes","presence","typing-indicator","echo-suppression","reconnect","backoff","ai-matrx","react","react-native"],"license":"MIT","_id":"@ai-matrx/realtime@0.8.5","maintainers":[{"name":"armanisadeghi","email":"arman@armansadeghi.com"}],"homepage":"https://github.com/AI-Matrix-Engine/aidream/tree/main/apps/shared/realtime#readme","bugs":{"url":"https://github.com/AI-Matrix-Engine/aidream/issues"},"dist":{"shasum":"05a03b3a75db89b12a4434cd516d6ed9ac6b127b","tarball":"https://registry.npmjs.org/@ai-matrx/realtime/-/realtime-0.8.5.tgz","fileCount":24,"integrity":"sha512-iuWQ3lJAZ212OPlxS7KaziJ2IojVrPnCIDsFvGY/lMThBAh5GsZ2khP+d1j7E5Al5hK7RNjrGuJDcj2/dY+OcQ==","signatures":[{"sig":"MEUCIQCFM9UXb0KIDs4DppCItXMTHMUT6ELANqj0NFuWcb7/twIgMUy832xyHgKawAiYINxem8oZaQHo/3qKaLCc3Ij/Rik=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCsY2VnkAxICakMgaKxi6C3WsajXcqCq+/Gi5VDqualVwIhAOKes8Of4DHgUS9JcjrOMpxJycVl5UQcvLd/NKROYfDZ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1999862},"main":"./dist/index.cjs","type":"module","_from":"file:/home/runner/work/_temp/ai-matrx-realtime-0.8.5.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./react":{"import":{"types":"./dist/react.d.ts","default":"./dist/react.js"},"require":{"types":"./dist/react.d.cts","default":"./dist/react.cjs"}},"./native":{"import":{"types":"./dist/native.d.ts","default":"./dist/native.js"},"require":{"types":"./dist/native.d.cts","default":"./dist/native.cjs"}},"./package.json":"./package.json"},"scripts":{"test":"vitest run","build":"pnpm clean && tsup","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","check:package":"pnpm build && node ../scripts/check-exports-agreement.mjs && publint && pnpm verify:tarball","verify:tarball":"node ./scripts/verify-tarball.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dcc287be-03b7-48cf-a591-574c75e8462b"}},"_resolved":"/home/runner/work/_temp/ai-matrx-realtime-0.8.5.tgz","_integrity":"sha512-iuWQ3lJAZ212OPlxS7KaziJ2IojVrPnCIDsFvGY/lMThBAh5GsZ2khP+d1j7E5Al5hK7RNjrGuJDcj2/dY+OcQ==","repository":{"url":"git+https://github.com/AI-Matrix-Engine/aidream.git","type":"git","directory":"apps/shared/realtime"},"_npmVersion":"12.0.2","description":"The ONE Supabase Realtime layer for Matrx clients: channel-naming registry, enforced channel lifecycle, echo suppression on by default, at-least-once delivery with idempotent dedup, a decoupled ordered handler queue, reconnect with jittered backoff and a ","directories":{},"sideEffects":false,"_nodeVersion":"24.20.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","jsdom":"^30.0.1","react":"^19.3.0","vitest":"^5.0.1","publint":"^0.3.24","react-dom":"^19.3.0","typescript":"^5.9.3","@types/node":"^26.6.1","@types/react":"19.3.0","@types/react-dom":"19.3.0","@arethetypeswrong/cli":"^0.18.5","@supabase/supabase-js":"^2.116.0","@testing-library/react":"^16.3.3"},"peerDependencies":{"react":">=18.0.0","react-native":">=0.76.0"},"peerDependenciesMeta":{"react":{"optional":true},"react-native":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/realtime_0.8.5_1789592959901_0.4771708608679095","host":"s3://npm-registry-packages-npm-production"}},"0.8.6":{"name":"@ai-matrx/realtime","version":"0.8.6","keywords":["supabase","realtime","broadcast","postgres-changes","presence","typing-indicator","echo-suppression","reconnect","backoff","ai-matrx","react","react-native"],"license":"MIT","_id":"@ai-matrx/realtime@0.8.6","maintainers":[{"name":"armanisadeghi","email":"arman@armansadeghi.com"}],"homepage":"https://github.com/AI-Matrix-Engine/aidream/tree/main/apps/shared/realtime#readme","bugs":{"url":"https://github.com/AI-Matrix-Engine/aidream/issues"},"dist":{"shasum":"70c5919abffd3d0c544632e0296c7b69443855e5","tarball":"https://registry.npmjs.org/@ai-matrx/realtime/-/realtime-0.8.6.tgz","fileCount":24,"integrity":"sha512-NY5KZrSbzadvuXdnWa1OskMDJZWL+V7RNkWPkdW23JcI6BiWWMnxMG+wgqAH2BjLRMut8HHEdG5uHVCqKeZ9CA==","signatures":[{"sig":"MEUCIQD2FUd0E5uzHt8f6JWaU26EWjYsAAZ0B8Mo3PX1cbdHsQIgc9LOMPRIQT/to2c4CAU1R96Vs/U3+z7Mw0qAzfkScQk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCar9vg9gxAe3ORNNreFrE2bGEOvkPZTG6OdJ4GQrfdvQIgMwv0HjX20JZfw486zlWsTNH7w5J/QgZY1JsHmv8IcdY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2000092},"main":"./dist/index.cjs","type":"module","_from":"file:/home/runner/work/_temp/ai-matrx-realtime-0.8.6.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./react":{"import":{"types":"./dist/react.d.ts","default":"./dist/react.js"},"require":{"types":"./dist/react.d.cts","default":"./dist/react.cjs"}},"./native":{"import":{"types":"./dist/native.d.ts","default":"./dist/native.js"},"require":{"types":"./dist/native.d.cts","default":"./dist/native.cjs"}},"./package.json":"./package.json"},"scripts":{"test":"vitest run","build":"pnpm clean && tsup","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","check:package":"pnpm build && node ../scripts/check-exports-agreement.mjs && publint && pnpm verify:tarball","verify:tarball":"node ./scripts/verify-tarball.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dcc287be-03b7-48cf-a591-574c75e8462b"}},"_resolved":"/home/runner/work/_temp/ai-matrx-realtime-0.8.6.tgz","_integrity":"sha512-NY5KZrSbzadvuXdnWa1OskMDJZWL+V7RNkWPkdW23JcI6BiWWMnxMG+wgqAH2BjLRMut8HHEdG5uHVCqKeZ9CA==","repository":{"url":"git+https://github.com/AI-Matrix-Engine/aidream.git","type":"git","directory":"apps/shared/realtime"},"_npmVersion":"12.0.2","description":"The ONE Supabase Realtime layer for Matrx clients: channel-naming registry, enforced channel lifecycle, echo suppression on by default, at-least-once delivery with idempotent dedup, a decoupled ordered handler queue, reconnect with jittered backoff and a ","directories":{},"sideEffects":false,"_nodeVersion":"24.20.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","jsdom":"^30.0.1","react":"^19.3.0","vitest":"^5.0.1","publint":"^0.3.24","react-dom":"^19.3.0","typescript":"^5.9.3","@types/node":"^26.6.1","@types/react":"19.3.0","@types/react-dom":"19.3.0","@arethetypeswrong/cli":"^0.18.5","@supabase/supabase-js":"^2.116.0","@testing-library/react":"^16.3.3"},"peerDependencies":{"react":">=18.0.0","react-native":">=0.76.0"},"peerDependenciesMeta":{"react":{"optional":true},"react-native":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/realtime_0.8.6_1789620180023_0.5995026888081836","host":"s3://npm-registry-packages-npm-production"}},"0.8.7":{"_id":"@ai-matrx/realtime@0.8.7","bugs":{"url":"https://github.com/AI-Matrix-Engine/aidream/issues"},"dist":{"shasum":"e76077dd0f5941919f27da4c3c012266fa15e67a","tarball":"https://registry.npmjs.org/@ai-matrx/realtime/-/realtime-0.8.7.tgz","fileCount":24,"integrity":"sha512-pzGwojb/uLBlYL9d60sq2lR+tdN3gAJA0ZnS2KdIh31z6glIzDbwyP9oub7DXFYn/LlhC/dKfoT0qcwl5l9GKw==","signatures":[{"sig":"MEYCIQCwZi1eO9Uy5xBPmgK68fGpR9I82dlKg8WBGS8bhIxovgIhANNQ7mJxXtOVIGAWD+mYblmcuABF05xdcyzKgc6WwGyh","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIFAv28jwkw/mC/xfy6ZDmVbO7rt84HO8GwxEseV62qyNAiA2lqHBl2bmSPyWDdetF3LM/13SBmg4Ktz9gMTrD4eVQA=="}],"unpackedSize":2000322},"main":"./dist/index.cjs","name":"@ai-matrx/realtime","type":"module","_from":"file:/home/runner/work/_temp/ai-matrx-realtime-0.8.7.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./react":{"import":{"types":"./dist/react.d.ts","default":"./dist/react.js"},"require":{"types":"./dist/react.d.cts","default":"./dist/react.cjs"}},"./native":{"import":{"types":"./dist/native.d.ts","default":"./dist/native.js"},"require":{"types":"./dist/native.d.cts","default":"./dist/native.cjs"}},"./package.json":"./package.json"},"license":"MIT","scripts":{"test":"vitest run","build":"pnpm clean && tsup","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","check:package":"pnpm build && node ../scripts/check-exports-agreement.mjs && publint && pnpm verify:tarball","verify:tarball":"node ./scripts/verify-tarball.mjs"},"version":"0.8.7","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dcc287be-03b7-48cf-a591-574c75e8462b"}},"homepage":"https://github.com/AI-Matrix-Engine/aidream/tree/main/apps/shared/realtime#readme","keywords":["supabase","realtime","broadcast","postgres-changes","presence","typing-indicator","echo-suppression","reconnect","backoff","ai-matrx","react","react-native"],"_resolved":"/home/runner/work/_temp/ai-matrx-realtime-0.8.7.tgz","_integrity":"sha512-pzGwojb/uLBlYL9d60sq2lR+tdN3gAJA0ZnS2KdIh31z6glIzDbwyP9oub7DXFYn/LlhC/dKfoT0qcwl5l9GKw==","repository":{"url":"git+https://github.com/AI-Matrix-Engine/aidream.git","type":"git","directory":"apps/shared/realtime"},"_npmVersion":"12.1.0","description":"The ONE Supabase Realtime layer for Matrx clients: channel-naming registry, enforced channel lifecycle, echo suppression on by default, at-least-once delivery with idempotent dedup, a decoupled ordered handler queue, reconnect with jittered backoff and a ","directories":{},"maintainers":[{"name":"armanisadeghi","email":"arman@armansadeghi.com"}],"sideEffects":false,"_nodeVersion":"24.20.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","jsdom":"^30.1.1","react":"^19.3.0","vitest":"^5.0.1","publint":"^0.3.24","react-dom":"^19.3.0","typescript":"^6.0.3","@types/node":"^26.6.2","@types/react":"19.3.0","@types/react-dom":"19.3.0","@arethetypeswrong/cli":"^0.18.5","@supabase/supabase-js":"^2.117.0","@testing-library/react":"^16.3.3"},"peerDependencies":{"react":">=18.0.0","react-native":">=0.76.0"},"peerDependenciesMeta":{"react":{"optional":true},"react-native":{"optional":true}},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/realtime_0.8.7_1790132350533_0.9585086972387842"}}},"time":{"created":"2026-08-31T07:14:43.600Z","modified":"2026-09-23T02:59:10.816Z","0.1.0":"2026-08-31T07:14:43.889Z","0.1.1":"2026-08-31T15:40:11.729Z","0.2.0":"2026-08-31T16:29:29.941Z","0.2.1":"2026-08-31T18:14:43.038Z","0.3.0":"2026-09-08T00:42:05.016Z","0.4.0":"2026-09-08T01:22:55.843Z","0.5.0":"2026-09-08T02:09:17.175Z","0.6.0":"2026-09-08T02:43:28.107Z","0.7.0":"2026-09-08T03:10:20.158Z","0.7.1":"2026-09-08T17:02:51.770Z","0.7.2":"2026-09-08T18:02:39.334Z","0.7.3":"2026-09-08T18:15:54.114Z","0.7.4":"2026-09-08T18:43:23.387Z","0.7.5":"2026-09-09T07:00:43.603Z","0.7.6":"2026-09-10T19:08:19.538Z","0.7.7":"2026-09-10T19:47:35.696Z","0.7.8":"2026-09-10T23:19:41.972Z","0.7.9":"2026-09-11T23:35:46.648Z","0.7.10":"2026-09-13T05:41:23.038Z","0.7.11":"2026-09-13T07:15:18.882Z","0.7.12":"2026-09-13T07:25:38.961Z","0.7.13":"2026-09-13T22:03:48.702Z","0.8.0":"2026-09-14T06:18:47.504Z","0.8.1":"2026-09-14T06:38:33.906Z","0.8.2":"2026-09-14T07:02:21.726Z","0.8.3":"2026-09-14T20:19:17.079Z","0.8.4":"2026-09-16T09:28:00.486Z","0.8.5":"2026-09-16T21:09:20.048Z","0.8.6":"2026-09-17T04:43:00.127Z","0.8.7":"2026-09-23T02:59:10.635Z"},"bugs":{"url":"https://github.com/AI-Matrix-Engine/aidream/issues"},"license":"MIT","homepage":"https://github.com/AI-Matrix-Engine/aidream/tree/main/apps/shared/realtime#readme","keywords":["supabase","realtime","broadcast","postgres-changes","presence","typing-indicator","echo-suppression","reconnect","backoff","ai-matrx","react","react-native"],"repository":{"url":"git+https://github.com/AI-Matrix-Engine/aidream.git","type":"git","directory":"apps/shared/realtime"},"description":"The ONE Supabase Realtime layer for Matrx clients: channel-naming registry, enforced channel lifecycle, echo suppression on by default, at-least-once delivery with idempotent dedup, a decoupled ordered handler queue, reconnect with jittered backoff and a ","maintainers":[{"name":"armanisadeghi","email":"arman@armansadeghi.com"}],"readme":"# `@ai-matrx/realtime`\n\n**The ONE Supabase Realtime layer for Matrx clients.** Hand-writing `.channel(` in a\nconsuming app is a code-review defect.\n\n```bash\npnpm add @ai-matrx/realtime\n```\n\n---\n\n## Why this package exists\n\n> \"We struggle with it so much across our system. We've struggled with it trying to set it up\n> for messaging, trying to set it up for notes. To this day, after hundreds of hours of\n> development, the realtime in our note system still doesn't work perfectly.\" — Arman, 2026-08-29\n\nRealtime is not hard because subscribing is hard. Subscribing is four lines. It is hard\nbecause of eight things that are invisible until they hurt, each of which was learned here\nthe expensive way — a browser that froze, a note that lost an edit, a chat that showed \"Ada\nis typing…\" for an hour. This package writes those eight things down ONCE, as code, and\nmakes every consumer use them.\n\nThat list is the doctrine below. It replaces the prose version that used to live in\nmatrx-frontend's `supabase-realtime` skill; the skill now points here.\n\n---\n\n## The doctrine\n\n### 1. Suppress your own echoes — revision-monotonic FIRST, timestamp second\n\n**Supabase sends you your own writes.** Postgres Changes has no \"not to self\" option. The\necho of your `UPDATE` arrives **50–500ms after** your REST response already returned the fresh\nrow. By the time it lands, any \"save in flight\" flag has been cleared. **Flag-only suppression\nalways misses the echo.**\n\nWhat an unsuppressed echo does: the echo of save N arrives while the user typed toward N+1 →\ndirty-local ≠ server → a false conflict → the conflict UI does O(n²) diff work per render →\nthe next save clears it → its echo re-arms it. Self-sustaining main-thread saturation.\n\nWhat OVER-suppression does (the phantom conflict, 2026-09-13): every platform table's\n`version` moves on EVERY update — a desktop sync stamping `file_path`, an ingest job writing\nmetadata. Same actor, identical content, our write pending: the old ledger called it an echo,\nthe client kept the old number, and its next compare-and-swap missed into a conflict dialog\nfor a row whose text equalled the client's own base. **The client had suppressed the one event\nthat carried the number it needed.**\n\nThe package's write ledger classifies every payload, **by revision first** (the row's\n`version`, read from `revisionField`, default `version`):\n\n- R1. Older revision than we hold → **stale**.\n- R2. The revision an unsettled write of ours will produce, with matching content →\n  **own-echo** (the echo that beats the REST response, recognized by number).\n- R3. An already-settled revision with matching content → **own-echo**; divergent → remote.\n- R4. **Anything newer → remote, always** — same actor, same content, pending write or not.\n  Delivering it is harmless; swallowing it is the next phantom conflict.\n\nOnly when no revision is present does the timestamp doctrine apply:\n\n1. Strictly older `updated_at` than what we hold → **stale**, dropped (merging it *regresses*\n   `updated_at`, which fails the next save's optimistic lock into a sticky false conflict).\n2. Content we are known to have written and not yet settled → **own-echo**.\n3. Equal `updated_at` → own-echo only if the content fingerprint also matches; a\n   same-millisecond collaborator write still lands.\n4. Unparseable timestamps → deliver. **Degrade to delivering, never to silently dropping.**\n\nRegister your own writes with their number: `ledger.begin({ …, revision: expectedVersion + 1 })`,\n`ledger.settle(ticket, { revision: response.version })`, `ledger.observe({ …, revision })`.\nAnd pair it with `@ai-matrx/data`'s `guardedUpdate({ rebase })`, so a bump the client still\nmissed (a slept tab) is retried against the current number instead of shown as a conflict.\n\nBroadcast echoes are handled by the envelope: every send carries this client's session id and\nthe receiver drops its own.\n\n### 2. Echo suppression is ON by default; opting out is the discouraged path\n\n`echoSuppression: false` exists for the rare consumer that genuinely needs its own events back\nover the wire. It is never the default and never the fix for something else.\n\n### 3. At-least-once in, exactly-once out\n\nResubscribes, rejoins, and a consumer that broadcasts a row it also INSERTs all deliver the\nsame logical event twice. Supply an `eventKey` (or accept the default) and the package dedups.\n\n### 4. Handlers never run on the socket path\n\nA Supabase channel calls your handler on the socket's callback path. A handler that dispatches\nto Redux, diffs content, or makes an RPC therefore executes back-to-back with no yield when a\nburst arrives — and the tab freezes. Every historical Matrx browser lockup is a variant of\nthis; a background tab waking with 500 queued events is the classic trigger.\n\nThe package puts a bounded, ordered, yielding queue between the socket and your handler.\nOrder is preserved per channel (an async handler is awaited before the next event starts), the\ndrain yields to the event loop every few milliseconds, and depth is capped — an overflow\n**sheds the oldest work, says so, and triggers a reconcile**, which is the correct recovery\nfor \"we could not keep up\".\n\n### 5. Reconnect means RE-READ. Realtime has no replay.\n\nEvery event that happened while the socket was down is gone forever. A reconnect without a\nre-read leaves a permanently wrong screen that looks perfectly healthy. So every channel\ndeclares `onBackfill`, and the package calls it on **every** recovery path: reconnect, tab\nwake, network restore, and queue overflow. A channel with no `onBackfill` gets a loud warning.\n\nBackoff is jittered and has a **stability reset**: the attempt counter resets only after the\nchannel has *held* for 30s, never on `SUBSCRIBED`. Resetting on subscribe makes a flapping\nchannel cycle at the 1s floor forever, firing a full catch-up fetch every cycle.\n\n### 6. Tab sleep and app background are the normal failure, not the exotic one\n\nA backgrounded tab gets throttled until the socket idles out; a suspended phone comes back\nwith a WebSocket that still *looks* open and will never deliver another event. Both map onto\nthe same wake path: reconcile, and re-join anything not demonstrably healthy. Web uses\n`visibilitychange`; React Native uses `AppState` (`@ai-matrx/realtime/native`).\n\n### 7. One place names channels\n\nSupabase's `client.channel(topic)` **dedupes by topic**: two features that both picked\n`\"messages\"` silently share one channel and lose each other's bindings. Declare a namespace\ninstead — a second, different declaration of the same name throws.\n\nSeparately, React 19 double-invokes effects and `removeChannel` is async, so a remount can be\nhanded the previous mount's still-joined channel and `.on(...)` throws *\"cannot add\npostgres_changes callbacks after subscribe()\"*.\n\n**🚨 THE TOPIC-SEMANTICS SPLIT — the two transports do not mean the same thing by \"topic\", and\nthe package treats them differently.**\n\n- **Postgres Changes: the topic is only a client-side connection key.** The server pushes on the\n  declared filter, whatever the channel is called. So every connection attempt gets a **unique\n  instance topic** (`mx:notes:u1#7`), which makes the remount collision above impossible for free.\n- **Broadcast and presence: the topic IS the room.** It is the routing key the server fans\n  messages out on. A unique instance topic there does not cost nothing — it costs *everything*:\n  two browsers that both declared `mx:room:1` land in `#1` and `#2` and never see each other.\n  (That shipped in 0.1.x and was found by `@ai-matrx/messaging`; fixed in 0.2.0.)\n\nSo a channel carrying broadcast or presence puts its **declared topic on the wire verbatim**, and\nthe manager keeps **one underlying channel per declared topic, ref-counted**: a second `open()` of\nthat topic attaches its bindings to the same channel, and the channel is removed only when the\nlast holder closes. The remount collision is handled there by deferring the real teardown one\nturn, so React's cleanup-then-re-run re-attaches instead of racing an async `removeChannel`.\n\nConsequences worth knowing before you open two holders on one topic:\n\n- They share ONE channel config. The first one's `echoSuppression` and presence key win, and a\n  disagreement is a loud `channel.room.config-mismatch` diagnostic — not a silent surprise.\n- They share ONE presence entry (one key per channel), so a topic needs exactly ONE presence\n  publisher. A surface that only READS the roster — a typists label, an online-dot list — passes\n  `presence: { publish: false }` (or `publish: false` to `useTyping`): it sees everyone and stops\n  fighting over the entry. Two publishers is a loud\n  `channel.room.presence.multiple-publishers` warning, not a mystery.\n- Echo suppression still applies per client, so one holder does **not** see its sibling's own\n  `send()` — that is the point of echo suppression, not a room failure. What both holders see is\n  every *remote* peer's message.\n- A holder that brings Postgres Changes bindings to an already-joined room forces a rebuild (those\n  bindings ride the JOIN payload and cannot be added later). It is announced as\n  `channel.room.rebuild`, and every holder reconciles through its backfill door. Open a mixed\n  channel's holders together at mount and it never happens.\n\n### 8. Choosing the transport\n\n- **Postgres Changes** — durable rows where RLS must gate delivery (notes, files, tasks). The\n  default for entity sync.\n- **Broadcast** — ephemeral or high-frequency data with no authorization nuance (CRDT updates,\n  typing, signaling). **Never manually broadcast a row you also INSERT** — every subscriber\n  gets it twice.\n- **Presence** — who's-here rosters. Ephemeral only.\n- **One channel per feature.** Postgres Changes, broadcast, and presence can share one; do not\n  run three.\n- If the table carries `updated_by` (the platform `_stamp_actor` trigger), every UPDATE already\n  identifies its editor — you may not need presence at all.\n\n### 9. A foreign peer owns its wire — say so with `wire: {mode:\"raw\"}`\n\nEvery broadcast this package sends is wrapped in the Matrx envelope\n(`{v, cid, eid, ts, data}`), and that envelope is what makes echo suppression and dedup possible\nat all. Some channels do not get to choose: the other end is a **separately released program**\nthat reads a payload shape it defined, and re-shaping the wire under it would simply stop the peer\nhearing us with nothing failing loudly at either end. The case that produced this mode is the\nChrome extension's `matrx-extension-bridge:<userId>` channel — the deployed extension parses a\nbare `BridgeEnvelope` (`{direction, action, requestId, payload, timestamp}`) with a Zod schema.\n\n```ts\nconst bridge = defineChannelNamespace({\n  namespace: \"extension-bridge\",\n  parts: [\"userId\"],\n  description: \"matrx-extend ↔ matrx-frontend RPC bridge (foreign wire).\",\n  foreignTopic: \"matrx-extension-bridge\", // the peer's topic root, used verbatim\n});\n\nmanager.open({\n  topic: bridge.topic({ userId }),\n  wire: { mode: \"raw\", acceptEchoFromSelf: true },\n  broadcast: [{ event: \"FRONTEND_RPC\", onMessage: ({ data }) => route(data) }],\n  eventKey: (_source, payload) => `${payload.direction}:${payload.requestId}`,\n  onBackfill: () => {},\n});\n```\n\nRaw mode means exactly two things, in both directions: **send puts your payload on the wire\nverbatim** (byte-identical to a hand-rolled `channel.send`), and **receive never reads an\nenvelope** — not even from a payload that happens to look enveloped. `BroadcastMessage.enveloped`\nis always `false` there.\n\n**It is a named downgrade, and it is never silent.** Two protections ride the envelope:\n\n- **Echo suppression** used `cid`, and a raw wire has none. Supply `wire.isOwnMessage` when the\n  peer's shape identifies its sender; otherwise set `wire.acceptEchoFromSelf: true` to state in\n  code that the server's `broadcast.self:false` is the only protection. Supplying neither is legal\n  and produces `channel.raw.echo-unguarded` (warn); the explicit opt-out still announces itself as\n  `channel.raw.echo-accepted` (info), because the diagnostics stream must show which channels run\n  unguarded.\n- **Dedup** keyed off `eid`. Without one, every arrival is a distinct key. Supply `eventKey` — it\n  receives the raw payload — or take `channel.raw.dedup-unguarded` (warn).\n\n**`foreignTopic` is the topic half of the same idea.** The namespace is still declared and still\ncollision-checked; only the `mx:` root is replaced by the peer's. Renaming a foreign topic to\n`mx:…` does not migrate anything — it puts this client in a room of one while the peer keeps\nlistening where it always did.\n\nRaw mode is **transitional by intent**: it exists so both ends of a foreign wire can ride this\npackage today. When the peer ships an envelope-aware release, the change is deleting `wire` from\nthe spec — coordinate the two releases and record the order in the peer's channel contract.\n\n### Silent-zero-events checklist\n\nA subscription that compiles but receives nothing has one of these:\n\n1. The table is not in the `supabase_realtime` **publication**.\n2. RLS filters the events (realtime is RLS-authorized — that is a feature, but grants gate\n   delivery).\n3. `REPLICA IDENTITY FULL` is missing and you need old-row data or RLS-on-DELETE.\n4. The table is not yet in the PostgREST/realtime schema cache (`notify pgrst, 'reload schema'`).\n\n---\n\n## Using it\n\n### React\n\n```tsx\nimport { RealtimeProvider, useChannel } from \"@ai-matrx/realtime/react\";\nimport { defineChannelNamespace } from \"@ai-matrx/realtime\";\n\n// Once, beside the feature. Declaring twice with a different shape throws.\nexport const notesChannel = defineChannelNamespace({\n  namespace: \"notes\",\n  parts: [\"userId\"],\n  description: \"Note rows for one user\",\n});\n\nfunction App({ supabase, userId }) {\n  return (\n    <RealtimeProvider client={supabase} actorId={userId}>\n      <Notes userId={userId} />\n    </RealtimeProvider>\n  );\n}\n\nfunction Notes({ userId }) {\n  const { status } = useChannel({\n    topic: notesChannel.topic({ userId }),\n    postgresChanges: [\n      {\n        event: \"*\",\n        schema: \"workbench\",\n        table: \"notes\",\n        rowId: (row) => String(row.id),\n        fingerprint: (row) => String(row.content),\n        onChange: ({ row }) => applyNote(row),\n      },\n    ],\n    // Realtime has no replay. This is how the gap gets closed.\n    onBackfill: () => refetchNotes(userId),\n  });\n\n  return <StatusDot status={status} />;\n}\n```\n\nHandlers may be fresh closures on every render — the subscription is keyed on the channel's\n*shape*, not on handler identity, and the latest handler is always the one that runs.\n\n### One provider per app — and how a sibling package rides it\n\n`<RealtimeProvider>` builds exactly ONE manager, and that manager owns the write ledger that\nmakes an optimistic write's own echo recognizable. A second provider anywhere in the tree is a\nsecond ledger and a second set of channels, so one manager's own writes look REMOTE to the\nother. Apps mount one.\n\nA PACKAGE that does realtime work of its own (`@ai-matrx/messaging`, `@ai-matrx/meet`) must\ntherefore ride the host's manager when the host has one, and mount its own only in an app that\nwires none:\n\n```tsx\nconst hostProvidesRealtime = useIsRealtimeProviderMounted();\nif (hostProvidesRealtime) return <Runtime {...props} />;\nreturn <RealtimeProvider client={client}><Runtime {...props} /></RealtimeProvider>;\n```\n\nAsk `useIsRealtimeProviderMounted()`, never `useRealtimeManager() !== null` — the manager is\nalso null while a mounted provider waits for its Supabase client, and a package that guessed\nfrom it would mount a provider and then tear it, and every channel under it, back down the\ninstant the host's client arrived.\n\n### Redux middleware, thunks, and other non-React owners\n\nRule 4 prefers a Redux middleware as a feature's subscription owner — a component effect\nre-subscribes on identity churn and multiplies channels across mounts. Middleware cannot call\na hook, so the provider **publishes** its manager and non-React owners read it. This is a\npointer to the ONE manager the provider built; constructing your own in middleware is a second\nwrite ledger, and every optimistic write of yours would then classify as `remote` and cost a\nrefetch.\n\n```ts\nimport { subscribeToRealtimeManager } from \"@ai-matrx/realtime\";\n\n// Opens on arrival, closes on departure, RE-OPENS on the new manager when the\n// provider rebuilds one (the signed-in user changed). Returns a stop function.\nconst stop = subscribeToRealtimeManager(() => ({\n  topic: notesChannel.topic({ userId: currentUserId() }),\n  postgresChanges: [ /* … */ ],\n  onBackfill: () => store.dispatch(fetchNotes()),\n}));\n```\n\n`currentRealtimeManager()` and `onRealtimeManagerChange(listener)` are the primitives underneath.\nReading `currentRealtimeManager()` **once** at module load is almost always wrong: it is `null`\nbefore auth resolves, and the manager is rebuilt (and the old one disposed, with every channel it\nowned) when the signed-in user changes. Prefer `subscribeToRealtimeManager`.\n\nThe spec is a **factory** so the owner captures the current user id / `dispatch` at open time\nrather than at module load.\n\n### Private channels (Database Broadcast)\n\nA topic authorized against `realtime.messages` RLS — how `realtime.broadcast_changes()`\nfrom a Postgres trigger delivers rows only to the entitled users — declares `private`:\n\n```ts\nmanager.open({\n  topic: schedulerChannel.topic({ userId }),\n  private: true,\n  broadcast: [{ event: \"UPDATE\", onMessage: ({ data }) => apply(data) }],\n  onBackfill: () => refetchSchedules(),\n});\n```\n\nThe package creates the channel with `config.private: true` **and** authorizes the socket\n(`client.realtime.setAuth()`) before subscribing. That second step is not optional and is\nthe quietest failure in this whole surface: without it the join is refused, the channel\nreceives nothing forever, and it reports itself perfectly healthy. A client that cannot\nauthorize gets `channel.private.unsupported`; a token that will not attach gets\n`channel.private.auth-failed`.\n\n### Autosave coexistence\n\nRegister the write on the shared ledger **before** the optimistic update, and the echo is\nsuppressed while a genuine collaborator write still lands:\n\n```ts\nconst manager = useRealtimeManager();\nconst ticket = manager.ledger.begin({\n  table: \"workbench.notes\",\n  id: note.id,\n  fingerprint: draft.content,\n});\ntry {\n  const saved = await saveNote(draft);\n  manager.ledger.settle(ticket, { updatedAt: saved.updated_at, fingerprint: saved.content });\n} catch (error) {\n  manager.ledger.abandon(ticket);\n  throw error;\n}\n```\n\n`ledger.classify(...)` returns `own-echo | remote | stale` plus `localWritePending`, so an\noptimistic write, its echo, and a real remote write are all distinguishable.\n\n### Presence and typing\n\n```tsx\nconst { others } = usePresence({\n  topic: roomChannel.topic({ roomId }),\n  presence: { state: { userId, name } },\n});\n\nconst { typists, onKeystroke, stopTyping } = useTyping({\n  topic: chatChannel.topic({ conversationId }),\n  identity: { userId, name },\n});\n```\n\nA crashed client cannot leave a ghost participant (heartbeat + local-clock expiry), and\n\"X is typing…\" cannot stick (typing is a renewed lease, never a latch that waits for a stop\nmessage that may never arrive).\n\n### React Native / Expo\n\n```tsx\nimport { NativeRealtimeProvider, useChannel } from \"@ai-matrx/realtime/native\";\n\n<NativeRealtimeProvider client={supabase} actorId={userId}>\n  {children}\n</NativeRealtimeProvider>;\n```\n\nIdentical hooks, with the `AppState` seam already wired: background → foreground reconciles\nand re-joins. `react-native` is an optional peer; the web entries never load it.\n\n### Diagnostics\n\n```ts\nimport { realtimeDiagnostics } from \"@ai-matrx/realtime\";\n// or: const snapshot = useRealtimeDiagnostics();\n```\n\nLive channels, subscription state, events/minute, and the numbers nobody ever had:\n`suppressedEcho`, `deduped`, `stale`, `queueDepth`, `queueDropped`, `handlerErrors`,\n`backfills`. Realtime bugs are meant to be *observed*, not guessed at.\n\n---\n\n## Entry points\n\n| Entry | Contains | `\"use client\"` |\n|---|---|---|\n| `@ai-matrx/realtime` | The framework-free core: manager, write ledger, topics, presence/typing runtimes, queue, backoff, dedup, diagnostics | no (safe from RSC, Redux middleware, workers, node) |\n| `@ai-matrx/realtime/react` | `RealtimeProvider`, `useChannel`, `usePresence`, `useTyping`, `useRealtimeDiagnostics`, `useRealtimeHealth` — plus the whole core | yes |\n| `@ai-matrx/realtime/native` | `NativeRealtimeProvider`, `createReactNativeEnvironment` — plus the whole React binding | yes |\n\nZero runtime dependencies. `react` and `react-native` are optional peers. The package never\nimports `@supabase/supabase-js`: the client is accepted structurally, and a compile-time proof\nagainst the real declarations lives in `src/core/supabase-shape.test.ts`.\n\n---\n\n## Migrating off hand-rolled channels\n\n1. Declare a namespace for the feature; delete the hand-written topic string.\n2. Replace the `.channel(...)` block with `useChannel` (or `manager.open` in middleware).\n3. Move the catch-up read into `onBackfill` — if the module had none, this is the bug you are\n   fixing.\n4. Delete the module's own echo/dedup/backoff code. Keeping a second copy beside the package\n   is the named failure, not the safe option.\n5. `uniqueChannelTopic` lives HERE. `@ai-matrx/data/db` re-exports it (data 0.6.3) so its\n   existing call sites keep working — but a migrating feature stops calling it at all: a\n   namespace names the channel and the manager decides the wire topic per the topic-semantics\n   split in rule 7. **A hand-rolled broadcast or presence channel that was calling\n   `uniqueChannelTopic` itself was splitting its own room** — that is a bug you are fixing, not\n   behavior to preserve.\n\n## License\n\nMIT\n","readmeFilename":"README.md"}