{"_id":"canary-kit","_rev":"45-ad8e8d2174362633b0e4665b2f6affe0","name":"canary-kit","dist-tags":{"latest":"2.11.0"},"versions":{"0.9.0":{"name":"canary-kit","version":"0.9.0","keywords":["canary","canary-kit","verification","identity","duress","safe-word","nostr","hmac","totp","deepfake","voice-clone","meshtastic","liveness","dead-mans-switch","coercion-resistance","spoken-word","bidirectional-verification","offline-first","minimal-dependencies","voice-phishing","vishing","anti-fraud","phone-verification","family-safety"],"author":{"name":"TheCryptoDonkey"},"license":"MIT","_id":"canary-kit@0.9.0","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://canary.trotters.cc/","bugs":{"url":"https://github.com/TheCryptoDonkey/canary-kit/issues"},"dist":{"shasum":"1f1d7f15e9d7af90fad6776a7cce5f1a12793e1a","tarball":"https://registry.npmjs.org/canary-kit/-/canary-kit-0.9.0.tgz","fileCount":69,"integrity":"sha512-HaennOAxkTZtWIIEIwOAm5Q6VP+q4wUfcwfI8KCOIfJwKZh1/pa17H0b8W5eF/urQeMjiBSZozhKl+nY5GLPkg==","signatures":[{"sig":"MEQCIDJ2YeudTbgsNRbCrA0Q+AoFZXmVVpIYxseiU7RCqwX8AiBj3Du0lfeYFCElBmn9gPZGCA3EpmdG1tY9gqHSpOiZYQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":472762},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./sync":{"types":"./dist/sync.d.ts","import":"./dist/sync.js"},"./nostr":{"types":"./dist/nostr.d.ts","import":"./dist/nostr.js"},"./token":{"types":"./dist/token.d.ts","import":"./dist/token.js"},"./beacon":{"types":"./dist/beacon.d.ts","import":"./dist/beacon.js"},"./session":{"types":"./dist/session.d.ts","import":"./dist/session.js"},"./encoding":{"types":"./dist/encoding.d.ts","import":"./dist/encoding.js"},"./wordlist":{"types":"./dist/wordlist.d.ts","import":"./dist/wordlist.js"}},"gitHead":"a1f7c007f2727ac6f881251061c148b863b1d770","scripts":{"dev":"vite --config vite.config.ts","demo":"npm run build:app && serve docs -l 8787","lint":"eslint src/","test":"vitest run","bench":"vitest bench","build":"tsc","record":"node docs/record/record.js","lint:fix":"eslint src/ --fix","test:e2e":"playwright test --config e2e/playwright.config.ts","build:app":"vite build --config vite.config.ts","typecheck":"tsc --noEmit","test:watch":"vitest","test:e2e:ui":"playwright test --config e2e/playwright.config.ts --ui","build:single":"vite build --config vite.singlefile.config.ts && cp dist-single/index.html canary.html && echo '✓ canary.html ready'","record:short":"node docs/record/record.js short","record:silent":"node docs/record/record.js --no-voice","record:extended":"node docs/record/record.js extended","test:e2e:online":"playwright test --config e2e/playwright.config.ts --project=online","test:e2e:offline":"playwright test --config e2e/playwright.config.ts --project=offline","test:e2e:protocol":"playwright test --config e2e/playwright.config.ts --project=protocol"},"_npmUser":{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"},"repository":{"url":"git+https://github.com/TheCryptoDonkey/canary-kit.git","type":"git"},"_npmVersion":"10.9.2","description":"Deepfake-proof identity verification. Open protocol, minimal dependencies.","directories":{},"sideEffects":false,"_nodeVersion":"22.17.0","dependencies":{"@scure/bip32":"^2.0.1","@scure/bip39":"^2.0.1"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.19.0","vite":"^7.3.1","serve":"^14.2.5","eslint":"^10.0.3","vitest":"^3.0.0","@types/ws":"^8.18.1","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^25.3.3","geohash-kit":"^1.3.0","maplibre-gl":"^5.19.0","nostr-tools":"^2.23.3","@noble/curves":"^2.0.1","@noble/hashes":"^2.0.1","@playwright/test":"^1.58.2","qrcode-generator":"^2.0.4","semantic-release":"^25.0.0","typescript-eslint":"^8.57.0","@vitest/coverage-v8":"^3.2.4","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","vite-plugin-singlefile":"^2.3.0","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/canary-kit_0.9.0_1773674986689_0.31664457642889055","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"name":"canary-kit","version":"0.10.0","keywords":["canary","canary-kit","verification","identity","duress","safe-word","nostr","hmac","totp","deepfake","voice-clone","meshtastic","liveness","dead-mans-switch","coercion-resistance","spoken-word","bidirectional-verification","offline-first","minimal-dependencies","voice-phishing","vishing","anti-fraud","phone-verification","family-safety"],"author":{"name":"TheCryptoDonkey"},"license":"MIT","_id":"canary-kit@0.10.0","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://canary.trotters.cc/","bugs":{"url":"https://github.com/TheCryptoDonkey/canary-kit/issues"},"dist":{"shasum":"0af61201c0e4996a45d7c5ed3406720aef4417d3","tarball":"https://registry.npmjs.org/canary-kit/-/canary-kit-0.10.0.tgz","fileCount":69,"integrity":"sha512-lbKRCVVP64FNc+r0soYxycS98lIdRvYp+5WfYC9Nu1xLQCVATQ5jQ3w6YAO/pVIFGRwT4NbD+GDtvfpTbxnEkA==","signatures":[{"sig":"MEUCIQCesIehBrPOChb4wRUfk8Kzi8F3ka6bLW6rjhwXlKi9MwIgX5Qva+gPL/bFuP3Ei+5yrr1cOcsnUipCqcb6AjbuH9w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/canary-kit@0.10.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":377824},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./sync":{"types":"./dist/sync.d.ts","import":"./dist/sync.js"},"./nostr":{"types":"./dist/nostr.d.ts","import":"./dist/nostr.js"},"./token":{"types":"./dist/token.d.ts","import":"./dist/token.js"},"./beacon":{"types":"./dist/beacon.d.ts","import":"./dist/beacon.js"},"./session":{"types":"./dist/session.d.ts","import":"./dist/session.js"},"./encoding":{"types":"./dist/encoding.d.ts","import":"./dist/encoding.js"},"./wordlist":{"types":"./dist/wordlist.d.ts","import":"./dist/wordlist.js"}},"gitHead":"465fa11c01fb42d557cc0df368b3783fcae6e556","scripts":{"dev":"vite --config vite.config.ts","demo":"npm run build:app && serve docs -l 8787","lint":"eslint src/","test":"vitest run","bench":"vitest bench","build":"tsc","record":"node docs/record/record.js","lint:fix":"eslint src/ --fix","test:e2e":"playwright test --config e2e/playwright.config.ts","build:app":"vite build --config vite.config.ts","typecheck":"tsc --noEmit","test:watch":"vitest","test:e2e:ui":"playwright test --config e2e/playwright.config.ts --ui","build:single":"vite build --config vite.singlefile.config.ts && cp dist-single/index.html canary.html && echo '✓ canary.html ready'","record:short":"node docs/record/record.js short","record:silent":"node docs/record/record.js --no-voice","record:extended":"node docs/record/record.js extended","test:e2e:online":"playwright test --config e2e/playwright.config.ts --project=online","test:e2e:offline":"playwright test --config e2e/playwright.config.ts --project=offline","test:e2e:protocol":"playwright test --config e2e/playwright.config.ts --project=protocol"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:c384c262-8983-4008-9399-35a39ef984c2"}},"repository":{"url":"git+https://github.com/TheCryptoDonkey/canary-kit.git","type":"git"},"_npmVersion":"11.11.0","description":"Deepfake-proof identity verification. Open protocol, minimal dependencies.","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","dependencies":{"@scure/bip32":"^2.0.1","@scure/bip39":"^2.0.1","spoken-token":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.19.0","vite":"^7.3.1","serve":"^14.2.5","eslint":"^10.0.3","vitest":"^3.0.0","@types/ws":"^8.18.1","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^25.3.3","geohash-kit":"^1.3.0","maplibre-gl":"^5.19.0","nostr-tools":"^2.23.3","@noble/curves":"^2.0.1","@noble/hashes":"^2.0.1","@playwright/test":"^1.58.2","qrcode-generator":"^2.0.4","semantic-release":"^25.0.0","typescript-eslint":"^8.57.0","@vitest/coverage-v8":"^3.2.4","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","vite-plugin-singlefile":"^2.3.0","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/canary-kit_0.10.0_1773754775533_0.9235912880905703","host":"s3://npm-registry-packages-npm-production"}},"0.11.0":{"name":"canary-kit","version":"0.11.0","keywords":["canary","canary-kit","verification","identity","duress","safe-word","nostr","hmac","totp","deepfake","voice-clone","meshtastic","liveness","dead-mans-switch","coercion-resistance","spoken-word","bidirectional-verification","offline-first","minimal-dependencies","voice-phishing","vishing","anti-fraud","phone-verification","family-safety"],"author":{"name":"TheCryptoDonkey"},"license":"MIT","_id":"canary-kit@0.11.0","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://canary.trotters.cc/","bugs":{"url":"https://github.com/TheCryptoDonkey/canary-kit/issues"},"dist":{"shasum":"5288081061a1b572f029210f423c1bc5b0887b9a","tarball":"https://registry.npmjs.org/canary-kit/-/canary-kit-0.11.0.tgz","fileCount":69,"integrity":"sha512-vvxoIfNwkw7t3p6gMNEIPs7VMrZZjjhM9kXQyE6ujrKNi7vuwIZ54bXzplBCishePTbeUFNgVVr7tzQ3OYKiqQ==","signatures":[{"sig":"MEQCIDw94rSNdrreifnTVva/JleSAB0Z712W55/IKlaJdrr2AiBPCaEej+syM6ruc1ZZiDkkI1l3w53VXrVziYEhWd6rgA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/canary-kit@0.11.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":382578},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./sync":{"types":"./dist/sync.d.ts","import":"./dist/sync.js"},"./nostr":{"types":"./dist/nostr.d.ts","import":"./dist/nostr.js"},"./token":{"types":"./dist/token.d.ts","import":"./dist/token.js"},"./beacon":{"types":"./dist/beacon.d.ts","import":"./dist/beacon.js"},"./session":{"types":"./dist/session.d.ts","import":"./dist/session.js"},"./encoding":{"types":"./dist/encoding.d.ts","import":"./dist/encoding.js"},"./wordlist":{"types":"./dist/wordlist.d.ts","import":"./dist/wordlist.js"}},"gitHead":"8131c6b90394ef76f9e58a82bbf00f87d95ff520","scripts":{"dev":"vite --config vite.config.ts","demo":"npm run build:app && serve docs -l 8787","lint":"eslint src/","test":"vitest run","bench":"vitest bench","build":"tsc","record":"node docs/record/record.js","lint:fix":"eslint src/ --fix","test:e2e":"playwright test --config e2e/playwright.config.ts","build:app":"vite build --config vite.config.ts","typecheck":"tsc --noEmit","test:watch":"vitest","test:e2e:ui":"playwright test --config e2e/playwright.config.ts --ui","build:single":"vite build --config vite.singlefile.config.ts && cp dist-single/index.html canary.html && echo '✓ canary.html ready'","record:short":"node docs/record/record.js short","record:silent":"node docs/record/record.js --no-voice","record:extended":"node docs/record/record.js extended","test:e2e:online":"playwright test --config e2e/playwright.config.ts --project=online","test:e2e:offline":"playwright test --config e2e/playwright.config.ts --project=offline","test:e2e:protocol":"playwright test --config e2e/playwright.config.ts --project=protocol"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:c384c262-8983-4008-9399-35a39ef984c2"}},"repository":{"url":"git+https://github.com/TheCryptoDonkey/canary-kit.git","type":"git"},"_npmVersion":"11.11.0","description":"Deepfake-proof identity verification. Open protocol, minimal dependencies.","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","dependencies":{"@scure/bip32":"^2.0.1","@scure/bip39":"^2.0.1","spoken-token":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.19.0","vite":"^7.3.1","serve":"^14.2.5","eslint":"^10.0.3","vitest":"^3.0.0","@types/ws":"^8.18.1","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^25.3.3","geohash-kit":"^1.3.0","maplibre-gl":"^5.19.0","nostr-tools":"^2.23.3","@noble/curves":"^2.0.1","@noble/hashes":"^2.0.1","@playwright/test":"^1.58.2","qrcode-generator":"^2.0.4","semantic-release":"^25.0.0","typescript-eslint":"^8.57.0","@vitest/coverage-v8":"^3.2.4","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","vite-plugin-singlefile":"^2.3.0","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/canary-kit_0.11.0_1773766365793_0.5883725502962502","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"canary-kit","version":"1.0.0","keywords":["canary","canary-kit","verification","identity","duress","safe-word","nostr","hmac","totp","deepfake","voice-clone","meshtastic","liveness","dead-mans-switch","coercion-resistance","spoken-word","bidirectional-verification","offline-first","minimal-dependencies","voice-phishing","vishing","anti-fraud","phone-verification","family-safety"],"author":{"name":"forgesworn"},"license":"MIT","_id":"canary-kit@1.0.0","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://canary.trotters.cc/","bugs":{"url":"https://github.com/forgesworn/canary-kit/issues"},"dist":{"shasum":"c01591145e690f9ae67167255a17641e120e59ac","tarball":"https://registry.npmjs.org/canary-kit/-/canary-kit-1.0.0.tgz","fileCount":69,"integrity":"sha512-l/XkT4lRjiBFLlvPrhEq9+wHb8YZ24mXsTdNF6y0x6AOkChb73cMMyY6vCLfYgOTuVj75Yqol94tjQ6z6mGOrw==","signatures":[{"sig":"MEYCIQCPNQRohUAkqm/i/g4RpRo5je0FOFfEvxwzmSnP3vfVMQIhAPwOxe0jckR0cP7nQdk2ME1l/PKHXO4Xg6EnKoXxm2xE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/canary-kit@1.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":404736},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./sync":{"types":"./dist/sync.d.ts","import":"./dist/sync.js"},"./nostr":{"types":"./dist/nostr.d.ts","import":"./dist/nostr.js"},"./token":{"types":"./dist/token.d.ts","import":"./dist/token.js"},"./beacon":{"types":"./dist/beacon.d.ts","import":"./dist/beacon.js"},"./session":{"types":"./dist/session.d.ts","import":"./dist/session.js"},"./encoding":{"types":"./dist/encoding.d.ts","import":"./dist/encoding.js"},"./wordlist":{"types":"./dist/wordlist.d.ts","import":"./dist/wordlist.js"}},"gitHead":"82977ef0d79e4750bb8dde0a965b70f4e3d3c86a","scripts":{"dev":"vite --config vite.config.ts","demo":"npm run build:app && serve docs -l 8787","lint":"eslint src/","test":"vitest run","bench":"vitest bench","build":"tsc","record":"node docs/record/record.js","lint:fix":"eslint src/ --fix","test:e2e":"playwright test --config e2e/playwright.config.ts","build:app":"vite build --config vite.config.ts","typecheck":"tsc --noEmit","test:watch":"vitest","test:e2e:ui":"playwright test --config e2e/playwright.config.ts --ui","build:single":"vite build --config vite.singlefile.config.ts && cp dist-single/index.html canary.html && echo '✓ canary.html ready'","record:short":"node docs/record/record.js short","record:silent":"node docs/record/record.js --no-voice","record:extended":"node docs/record/record.js extended","test:e2e:online":"playwright test --config e2e/playwright.config.ts --project=online","test:e2e:offline":"playwright test --config e2e/playwright.config.ts --project=offline","test:e2e:protocol":"playwright test --config e2e/playwright.config.ts --project=protocol"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:79f19dca-7d54-468f-a217-4139cba18eab"}},"repository":{"url":"git+https://github.com/forgesworn/canary-kit.git","type":"git"},"_npmVersion":"11.11.0","description":"Deepfake-proof identity verification. Open protocol, minimal dependencies.","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","dependencies":{"@scure/bip32":"^2.0.1","@scure/bip39":"^2.0.1","spoken-token":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.19.0","vite":"^7.3.1","serve":"^14.2.5","eslint":"^10.0.3","vitest":"^3.0.0","@types/ws":"^8.18.1","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^25.3.3","geohash-kit":"^1.3.0","maplibre-gl":"^5.19.0","nostr-tools":"^2.23.3","@noble/curves":"^2.0.1","@noble/hashes":"^2.0.1","@playwright/test":"^1.58.2","qrcode-generator":"^2.0.4","semantic-release":"^25.0.0","typescript-eslint":"^8.57.0","@vitest/coverage-v8":"^3.2.4","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","vite-plugin-singlefile":"^2.3.0","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/canary-kit_1.0.0_1773838850950_0.08328222528068574","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"canary-kit","version":"1.0.1","keywords":["canary","canary-kit","verification","identity","duress","safe-word","nostr","hmac","totp","deepfake","voice-clone","meshtastic","liveness","dead-mans-switch","coercion-resistance","spoken-word","bidirectional-verification","offline-first","minimal-dependencies","voice-phishing","vishing","anti-fraud","phone-verification","family-safety"],"author":{"name":"forgesworn"},"license":"MIT","_id":"canary-kit@1.0.1","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://canary.trotters.cc/","bugs":{"url":"https://github.com/forgesworn/canary-kit/issues"},"dist":{"shasum":"c27ee591e1df70045df01dfdfb37d620423b1943","tarball":"https://registry.npmjs.org/canary-kit/-/canary-kit-1.0.1.tgz","fileCount":69,"integrity":"sha512-R9gPRriC3ygfhxQsLgBIluJwNZc9iTsIe27pWydIF3k739wJfLrarB3MjzUhdqiE/REqSnkNPiSXBR+95Ht0BQ==","signatures":[{"sig":"MEUCIQDFD/4BMqSWe61Nvmbc/e8EzNW8C8mUukETT2QNymizIwIgYdU5Vxb3jSAZzdQnxa7e5HzMlKcGdhwPcAULuzeN0yU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/canary-kit@1.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":412205},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./sync":{"types":"./dist/sync.d.ts","import":"./dist/sync.js"},"./nostr":{"types":"./dist/nostr.d.ts","import":"./dist/nostr.js"},"./token":{"types":"./dist/token.d.ts","import":"./dist/token.js"},"./beacon":{"types":"./dist/beacon.d.ts","import":"./dist/beacon.js"},"./session":{"types":"./dist/session.d.ts","import":"./dist/session.js"},"./encoding":{"types":"./dist/encoding.d.ts","import":"./dist/encoding.js"},"./wordlist":{"types":"./dist/wordlist.d.ts","import":"./dist/wordlist.js"}},"gitHead":"737783616816c52e132cdc1688585cb57b147d38","scripts":{"dev":"vite --config vite.config.ts","demo":"npm run build:app && serve docs -l 8787","lint":"eslint src/","test":"vitest run","bench":"vitest bench","build":"tsc","record":"node docs/record/record.js","lint:fix":"eslint src/ --fix","test:e2e":"playwright test --config e2e/playwright.config.ts","build:app":"vite build --config vite.config.ts","typecheck":"tsc --noEmit","test:watch":"vitest","test:e2e:ui":"playwright test --config e2e/playwright.config.ts --ui","build:single":"vite build --config vite.singlefile.config.ts && cp dist-single/index.html canary.html && echo '✓ canary.html ready'","record:short":"node docs/record/record.js short","record:silent":"node docs/record/record.js --no-voice","record:extended":"node docs/record/record.js extended","test:e2e:online":"playwright test --config e2e/playwright.config.ts --project=online","test:e2e:offline":"playwright test --config e2e/playwright.config.ts --project=offline","test:e2e:protocol":"playwright test --config e2e/playwright.config.ts --project=protocol"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:79f19dca-7d54-468f-a217-4139cba18eab"}},"repository":{"url":"git+https://github.com/forgesworn/canary-kit.git","type":"git"},"_npmVersion":"11.11.0","description":"Deepfake-proof identity verification. Open protocol, minimal dependencies.","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","dependencies":{"@scure/bip32":"^2.0.1","@scure/bip39":"^2.0.1","spoken-token":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.19.0","vite":"^7.3.1","serve":"^14.2.5","eslint":"^10.0.3","vitest":"^3.0.0","@types/ws":"^8.18.1","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^25.3.3","geohash-kit":"^1.3.0","maplibre-gl":"^5.19.0","nostr-tools":"^2.23.3","@noble/curves":"^2.0.1","@noble/hashes":"^2.0.1","@playwright/test":"^1.58.2","qrcode-generator":"^2.0.4","semantic-release":"^25.0.0","typescript-eslint":"^8.57.0","@vitest/coverage-v8":"^3.2.4","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","vite-plugin-singlefile":"^2.3.0","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/canary-kit_1.0.1_1773843117789_0.4059607512487675","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"canary-kit","version":"1.0.2","keywords":["canary","canary-kit","verification","identity","duress","safe-word","nostr","hmac","totp","deepfake","voice-clone","meshtastic","liveness","dead-mans-switch","coercion-resistance","spoken-word","bidirectional-verification","offline-first","minimal-dependencies","voice-phishing","vishing","anti-fraud","phone-verification","family-safety"],"author":{"name":"forgesworn"},"license":"MIT","_id":"canary-kit@1.0.2","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://canary.trotters.cc/","bugs":{"url":"https://github.com/forgesworn/canary-kit/issues"},"dist":{"shasum":"35382034850cd2eec777a4165ade769af545b48e","tarball":"https://registry.npmjs.org/canary-kit/-/canary-kit-1.0.2.tgz","fileCount":69,"integrity":"sha512-MMe382OQQKoIpJBCf9W2ARDM+V+oXNibxUaatmfbQDuOp+5aPFzeVbWYizzdiGK2Qjc/PaHSbzNFHbAdRgbf1Q==","signatures":[{"sig":"MEUCIQCMX2LSwgEzxSX1k5Cf0L7HQnle28Vu+oRaAFM/JF8iDAIgIMKELQqL2B4IP56NKsOVeWQp7j8eq2mYsCuGzm5a6dc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/canary-kit@1.0.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":412205},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./sync":{"types":"./dist/sync.d.ts","import":"./dist/sync.js"},"./nostr":{"types":"./dist/nostr.d.ts","import":"./dist/nostr.js"},"./token":{"types":"./dist/token.d.ts","import":"./dist/token.js"},"./beacon":{"types":"./dist/beacon.d.ts","import":"./dist/beacon.js"},"./session":{"types":"./dist/session.d.ts","import":"./dist/session.js"},"./encoding":{"types":"./dist/encoding.d.ts","import":"./dist/encoding.js"},"./wordlist":{"types":"./dist/wordlist.d.ts","import":"./dist/wordlist.js"}},"gitHead":"d395002ed7990ad7f6b17c860b616867adb05abf","scripts":{"dev":"vite --config vite.config.ts","demo":"npm run build:app && serve docs -l 8787","lint":"eslint src/","test":"vitest run","bench":"vitest bench","build":"tsc","record":"node docs/record/record.js","lint:fix":"eslint src/ --fix","test:e2e":"playwright test --config e2e/playwright.config.ts","build:app":"vite build --config vite.config.ts","typecheck":"tsc --noEmit","test:watch":"vitest","test:e2e:ui":"playwright test --config e2e/playwright.config.ts --ui","build:single":"vite build --config vite.singlefile.config.ts && cp dist-single/index.html canary.html && echo '✓ canary.html ready'","record:short":"node docs/record/record.js short","record:silent":"node docs/record/record.js --no-voice","record:extended":"node docs/record/record.js extended","test:e2e:online":"playwright test --config e2e/playwright.config.ts --project=online","test:e2e:offline":"playwright test --config e2e/playwright.config.ts --project=offline","test:e2e:protocol":"playwright test --config e2e/playwright.config.ts --project=protocol"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:79f19dca-7d54-468f-a217-4139cba18eab"}},"repository":{"url":"git+https://github.com/forgesworn/canary-kit.git","type":"git"},"_npmVersion":"11.11.0","description":"Deepfake-proof identity verification. Open protocol, minimal dependencies.","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","dependencies":{"@scure/bip32":"^2.0.1","@scure/bip39":"^2.0.1","spoken-token":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.19.0","vite":"^7.3.1","serve":"^14.2.5","eslint":"^10.0.3","vitest":"^3.0.0","@types/ws":"^8.18.1","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^25.3.3","geohash-kit":"^1.3.0","maplibre-gl":"^5.19.0","nostr-tools":"^2.23.3","@noble/curves":"^2.0.1","@noble/hashes":"^2.0.1","@playwright/test":"^1.58.2","qrcode-generator":"^2.0.4","semantic-release":"^25.0.0","typescript-eslint":"^8.57.0","@vitest/coverage-v8":"^3.2.4","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","vite-plugin-singlefile":"^2.3.0","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/canary-kit_1.0.2_1773846413762_0.7636615534594844","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"canary-kit","version":"1.0.3","keywords":["canary","canary-kit","verification","identity","duress","safe-word","nostr","hmac","totp","deepfake","voice-clone","meshtastic","liveness","dead-mans-switch","coercion-resistance","spoken-word","bidirectional-verification","offline-first","minimal-dependencies","voice-phishing","vishing","anti-fraud","phone-verification","family-safety"],"author":{"name":"forgesworn"},"license":"MIT","_id":"canary-kit@1.0.3","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://canary.trotters.cc/","bugs":{"url":"https://github.com/forgesworn/canary-kit/issues"},"dist":{"shasum":"50b98928d62fc55b09c8eff11f140f34f96e9c36","tarball":"https://registry.npmjs.org/canary-kit/-/canary-kit-1.0.3.tgz","fileCount":69,"integrity":"sha512-3Qw/QLxpCuVuVRIzJZvoVcA/twpaPy9nd6BMi10OZHMwO7lulvBlWHpMQyARKOUuJwJuv+LCnjamCTb3vFm+YQ==","signatures":[{"sig":"MEUCIQCJ/Bf57z2PM5OrxI5u3ktDGh/PL9pMF+j4KO90yh21fgIgeb55LAdGKLbApdHoNK0Pjc1FM9HoyXwpmQcd+GLGKuA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/canary-kit@1.0.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":412205},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./sync":{"types":"./dist/sync.d.ts","import":"./dist/sync.js"},"./nostr":{"types":"./dist/nostr.d.ts","import":"./dist/nostr.js"},"./token":{"types":"./dist/token.d.ts","import":"./dist/token.js"},"./beacon":{"types":"./dist/beacon.d.ts","import":"./dist/beacon.js"},"./session":{"types":"./dist/session.d.ts","import":"./dist/session.js"},"./encoding":{"types":"./dist/encoding.d.ts","import":"./dist/encoding.js"},"./wordlist":{"types":"./dist/wordlist.d.ts","import":"./dist/wordlist.js"}},"gitHead":"4f47e14a5edaa62af7d77c184afc9fda00c9c3f6","scripts":{"dev":"vite --config vite.config.ts","demo":"npm run build:app && serve docs -l 8787","lint":"eslint src/","test":"vitest run","bench":"vitest bench","build":"tsc","record":"node docs/record/record.js","lint:fix":"eslint src/ --fix","test:e2e":"playwright test --config e2e/playwright.config.ts","build:app":"vite build --config vite.config.ts","typecheck":"tsc --noEmit","test:watch":"vitest","test:e2e:ui":"playwright test --config e2e/playwright.config.ts --ui","build:single":"vite build --config vite.singlefile.config.ts && cp dist-single/index.html canary.html && echo '✓ canary.html ready'","record:short":"node docs/record/record.js short","record:silent":"node docs/record/record.js --no-voice","record:extended":"node docs/record/record.js extended","test:e2e:online":"playwright test --config e2e/playwright.config.ts --project=online","test:e2e:offline":"playwright test --config e2e/playwright.config.ts --project=offline","test:e2e:protocol":"playwright test --config e2e/playwright.config.ts --project=protocol"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:79f19dca-7d54-468f-a217-4139cba18eab"}},"repository":{"url":"git+https://github.com/forgesworn/canary-kit.git","type":"git"},"_npmVersion":"11.11.0","description":"Deepfake-proof identity verification. Open protocol, minimal dependencies.","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","dependencies":{"@scure/bip32":"^2.0.1","@scure/bip39":"^2.0.1","spoken-token":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.19.0","vite":"^7.3.1","serve":"^14.2.5","eslint":"^10.0.3","vitest":"^3.0.0","@types/ws":"^8.18.1","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^25.3.3","geohash-kit":"^1.3.0","maplibre-gl":"^5.19.0","nostr-tools":"^2.23.3","@noble/curves":"^2.0.1","@noble/hashes":"^2.0.1","@playwright/test":"^1.58.2","qrcode-generator":"^2.0.4","semantic-release":"^25.0.0","typescript-eslint":"^8.57.0","@vitest/coverage-v8":"^3.2.4","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","vite-plugin-singlefile":"^2.3.0","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/canary-kit_1.0.3_1773847726602_0.11922914121641193","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"canary-kit","version":"1.0.4","keywords":["canary","canary-kit","verification","identity","duress","safe-word","nostr","hmac","totp","deepfake","voice-clone","meshtastic","liveness","dead-mans-switch","coercion-resistance","spoken-word","bidirectional-verification","offline-first","minimal-dependencies","voice-phishing","vishing","anti-fraud","phone-verification","family-safety"],"author":{"name":"forgesworn"},"license":"MIT","_id":"canary-kit@1.0.4","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://canary.trotters.cc/","bugs":{"url":"https://github.com/forgesworn/canary-kit/issues"},"dist":{"shasum":"06f1c4aebcdbba3eab5b335db27974d30913afd6","tarball":"https://registry.npmjs.org/canary-kit/-/canary-kit-1.0.4.tgz","fileCount":69,"integrity":"sha512-MMb00Bjb/38PgxwiUii/KMWQ5Gj5fLzJGpJOgdzpgNm7Q2py/W4n0Mu4DjYXqMBpjTZzaPjTqjcc35wUFa1pNg==","signatures":[{"sig":"MEUCIQDYg1xGd0Or+FkGgEAMGLeu3BflVR08ZwZyZMxSqLcqqQIgbvMSrfDhbqWk4Sn3JFEEEqo70mzs57dWzikZB3Iz8Uc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/canary-kit@1.0.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":412205},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./sync":{"types":"./dist/sync.d.ts","import":"./dist/sync.js"},"./nostr":{"types":"./dist/nostr.d.ts","import":"./dist/nostr.js"},"./token":{"types":"./dist/token.d.ts","import":"./dist/token.js"},"./beacon":{"types":"./dist/beacon.d.ts","import":"./dist/beacon.js"},"./session":{"types":"./dist/session.d.ts","import":"./dist/session.js"},"./encoding":{"types":"./dist/encoding.d.ts","import":"./dist/encoding.js"},"./wordlist":{"types":"./dist/wordlist.d.ts","import":"./dist/wordlist.js"}},"gitHead":"86e7425fda5e4a1ec6db594acf8e51c9c94474b2","scripts":{"dev":"vite --config vite.config.ts","demo":"npm run build:app && serve docs -l 8787","lint":"eslint src/","test":"vitest run","bench":"vitest bench","build":"tsc","record":"node docs/record/record.js","lint:fix":"eslint src/ --fix","test:e2e":"playwright test --config e2e/playwright.config.ts","build:app":"vite build --config vite.config.ts","typecheck":"tsc --noEmit","test:watch":"vitest","test:e2e:ui":"playwright test --config e2e/playwright.config.ts --ui","build:single":"vite build --config vite.singlefile.config.ts && cp dist-single/index.html canary.html && echo '✓ canary.html ready'","record:short":"node docs/record/record.js short","record:silent":"node docs/record/record.js --no-voice","record:extended":"node docs/record/record.js extended","test:e2e:online":"playwright test --config e2e/playwright.config.ts --project=online","test:e2e:offline":"playwright test --config e2e/playwright.config.ts --project=offline","test:e2e:protocol":"playwright test --config e2e/playwright.config.ts --project=protocol"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:79f19dca-7d54-468f-a217-4139cba18eab"}},"repository":{"url":"git+https://github.com/forgesworn/canary-kit.git","type":"git"},"_npmVersion":"11.11.0","description":"Deepfake-proof identity verification. Open protocol, minimal dependencies.","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","dependencies":{"@scure/bip32":"^2.0.1","@scure/bip39":"^2.0.1","spoken-token":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.19.0","vite":"^7.3.1","serve":"^14.2.5","eslint":"^10.0.3","vitest":"^3.0.0","@types/ws":"^8.18.1","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^25.3.3","geohash-kit":"^1.3.0","maplibre-gl":"^5.19.0","nostr-tools":"^2.23.3","@noble/curves":"^2.0.1","@noble/hashes":"^2.0.1","@playwright/test":"^1.58.2","qrcode-generator":"^2.0.4","semantic-release":"^25.0.0","typescript-eslint":"^8.57.0","@vitest/coverage-v8":"^3.2.4","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","vite-plugin-singlefile":"^2.3.0","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/canary-kit_1.0.4_1773849037297_0.0653382814379675","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"canary-kit","version":"1.0.5","keywords":["canary","canary-kit","verification","identity","duress","safe-word","nostr","hmac","totp","deepfake","voice-clone","meshtastic","liveness","dead-mans-switch","coercion-resistance","spoken-word","bidirectional-verification","offline-first","minimal-dependencies","voice-phishing","vishing","anti-fraud","phone-verification","family-safety"],"author":{"name":"forgesworn"},"license":"MIT","_id":"canary-kit@1.0.5","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://canary.trotters.cc/","bugs":{"url":"https://github.com/forgesworn/canary-kit/issues"},"dist":{"shasum":"88ad6a1c481d1e43935121c32174366c3ff05e61","tarball":"https://registry.npmjs.org/canary-kit/-/canary-kit-1.0.5.tgz","fileCount":69,"integrity":"sha512-Q25PF7oTwsQkuBD3KYq4mfb+OvmNm3xIdM1HekMxactjtqW34Vqt3i8dKuu3JXfndXtUMdCdkfg4HZ1MG0MGaQ==","signatures":[{"sig":"MEYCIQDKKPcHc5JdseIqlSdIrm+3LfKnecKSCVuMLkDKCHY7iAIhAIvzhbv/Q+QVbJ87CALraQq2GCpCY4DseQO9o1AvQHvR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/canary-kit@1.0.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":412205},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./sync":{"types":"./dist/sync.d.ts","import":"./dist/sync.js"},"./nostr":{"types":"./dist/nostr.d.ts","import":"./dist/nostr.js"},"./token":{"types":"./dist/token.d.ts","import":"./dist/token.js"},"./beacon":{"types":"./dist/beacon.d.ts","import":"./dist/beacon.js"},"./session":{"types":"./dist/session.d.ts","import":"./dist/session.js"},"./encoding":{"types":"./dist/encoding.d.ts","import":"./dist/encoding.js"},"./wordlist":{"types":"./dist/wordlist.d.ts","import":"./dist/wordlist.js"}},"gitHead":"c65b9e72a08f9a5a082bc75b088fca469f58c711","scripts":{"dev":"vite --config vite.config.ts","demo":"npm run build:app && serve docs -l 8787","lint":"eslint src/","test":"vitest run","bench":"vitest bench","build":"tsc","record":"node docs/record/record.js","lint:fix":"eslint src/ --fix","test:e2e":"playwright test --config e2e/playwright.config.ts","build:app":"vite build --config vite.config.ts","typecheck":"tsc --noEmit","test:watch":"vitest","test:e2e:ui":"playwright test --config e2e/playwright.config.ts --ui","build:single":"vite build --config vite.singlefile.config.ts && cp dist-single/index.html canary.html && echo '✓ canary.html ready'","record:short":"node docs/record/record.js short","record:silent":"node docs/record/record.js --no-voice","record:extended":"node docs/record/record.js extended","test:e2e:online":"playwright test --config e2e/playwright.config.ts --project=online","test:e2e:offline":"playwright test --config e2e/playwright.config.ts --project=offline","test:e2e:protocol":"playwright test --config e2e/playwright.config.ts --project=protocol"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:79f19dca-7d54-468f-a217-4139cba18eab"}},"repository":{"url":"git+https://github.com/forgesworn/canary-kit.git","type":"git"},"_npmVersion":"11.11.0","description":"Deepfake-proof identity verification. Open protocol, minimal dependencies.","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","dependencies":{"@scure/bip32":"^2.0.1","@scure/bip39":"^2.0.1","spoken-token":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.19.0","vite":"^7.3.1","serve":"^14.2.5","eslint":"^10.0.3","vitest":"^3.0.0","@types/ws":"^8.18.1","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^25.3.3","geohash-kit":"^1.3.0","maplibre-gl":"^5.19.0","nostr-tools":"^2.23.3","@noble/curves":"^2.0.1","@noble/hashes":"^2.0.1","@playwright/test":"^1.58.2","qrcode-generator":"^2.0.4","semantic-release":"^25.0.0","typescript-eslint":"^8.57.0","@vitest/coverage-v8":"^3.2.4","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","vite-plugin-singlefile":"^2.3.0","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/canary-kit_1.0.5_1773849317850_0.32738244276881434","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"canary-kit","version":"1.1.0","keywords":["canary","canary-kit","verification","identity","duress","safe-word","nostr","hmac","totp","deepfake","voice-clone","meshtastic","liveness","dead-mans-switch","coercion-resistance","spoken-word","bidirectional-verification","offline-first","minimal-dependencies","voice-phishing","vishing","anti-fraud","phone-verification","family-safety"],"author":{"name":"forgesworn"},"license":"MIT","_id":"canary-kit@1.1.0","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://canary.trotters.cc/","bugs":{"url":"https://github.com/forgesworn/canary-kit/issues"},"dist":{"shasum":"f3d7de0af3ea36b39c026e3ec7ad5092d3603e24","tarball":"https://registry.npmjs.org/canary-kit/-/canary-kit-1.1.0.tgz","fileCount":69,"integrity":"sha512-u0iCNpF3baMmJ6IN6lHtYpjkazeJPWhxgCXqjPiVzYlC2SEuZXfTIcKXh0PXSOpIl8auQ5MFYBQm5h7n39vGrw==","signatures":[{"sig":"MEYCIQCHzRUoztV5oNdV8DzpYoEmJ0OaeYgbhU1/RiRTv54BYQIhAKBMBaive/HYfnIqP+M+ttWGGWbJuUwENYOmxj6wPJGz","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/canary-kit@1.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":412205},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./sync":{"types":"./dist/sync.d.ts","import":"./dist/sync.js"},"./nostr":{"types":"./dist/nostr.d.ts","import":"./dist/nostr.js"},"./token":{"types":"./dist/token.d.ts","import":"./dist/token.js"},"./beacon":{"types":"./dist/beacon.d.ts","import":"./dist/beacon.js"},"./session":{"types":"./dist/session.d.ts","import":"./dist/session.js"},"./encoding":{"types":"./dist/encoding.d.ts","import":"./dist/encoding.js"},"./wordlist":{"types":"./dist/wordlist.d.ts","import":"./dist/wordlist.js"}},"gitHead":"c571f27f205036e603c3022509fc9a3eb38d32c2","scripts":{"dev":"vite --config vite.config.ts","demo":"npm run build:app && serve docs -l 8787","lint":"eslint src/","test":"vitest run","bench":"vitest bench","build":"tsc","record":"node docs/record/record.js","lint:fix":"eslint src/ --fix","test:e2e":"playwright test --config e2e/playwright.config.ts","build:app":"vite build --config vite.config.ts","typecheck":"tsc --noEmit","test:watch":"vitest","test:e2e:ui":"playwright test --config e2e/playwright.config.ts --ui","build:single":"vite build --config vite.singlefile.config.ts && cp dist-single/index.html canary.html && echo '✓ canary.html ready'","record:short":"node docs/record/record.js short","record:silent":"node docs/record/record.js --no-voice","record:extended":"node docs/record/record.js extended","test:e2e:online":"playwright test --config e2e/playwright.config.ts --project=online","test:e2e:offline":"playwright test --config e2e/playwright.config.ts --project=offline","test:e2e:protocol":"playwright test --config e2e/playwright.config.ts --project=protocol"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:79f19dca-7d54-468f-a217-4139cba18eab"}},"repository":{"url":"git+https://github.com/forgesworn/canary-kit.git","type":"git"},"_npmVersion":"11.11.0","description":"Deepfake-proof identity verification. Open protocol, minimal dependencies.","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","dependencies":{"@scure/bip32":"^2.0.1","@scure/bip39":"^2.0.1","spoken-token":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.19.0","vite":"^7.3.1","serve":"^14.2.5","eslint":"^10.0.3","vitest":"^3.0.0","@types/ws":"^8.18.1","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^25.3.3","geohash-kit":"^1.3.0","maplibre-gl":"^5.19.0","nostr-tools":"^2.23.3","@noble/curves":"^2.0.1","@noble/hashes":"^2.0.1","@playwright/test":"^1.58.2","qrcode-generator":"^2.0.4","semantic-release":"^25.0.0","typescript-eslint":"^8.57.0","@vitest/coverage-v8":"^3.2.4","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","vite-plugin-singlefile":"^2.3.0","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/canary-kit_1.1.0_1773849574880_0.715506666009168","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"canary-kit","version":"1.2.0","keywords":["canary","canary-kit","verification","identity","duress","safe-word","nostr","hmac","totp","deepfake","voice-clone","meshtastic","liveness","dead-mans-switch","coercion-resistance","spoken-word","bidirectional-verification","offline-first","minimal-dependencies","voice-phishing","vishing","anti-fraud","phone-verification","family-safety"],"author":{"name":"forgesworn"},"license":"MIT","_id":"canary-kit@1.2.0","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://canary.trotters.cc/","bugs":{"url":"https://github.com/forgesworn/canary-kit/issues"},"dist":{"shasum":"9c387cf977a146a9f90de88fc0338a92e5e2f660","tarball":"https://registry.npmjs.org/canary-kit/-/canary-kit-1.2.0.tgz","fileCount":69,"integrity":"sha512-PH/ammrA6W2/t7TJ2XJCpe+SVAXimhG+cHgI9vaMCqR+9cQma4lmhwYn+nF9jWT3K8G+bOXsz/LBUhHlV0KekQ==","signatures":[{"sig":"MEUCIQCNtuzxdTNXQjhbbwu8ENjOBUEWKOkjIbRUQsMvAgVNeQIgZm3r2muqUtwYBV2KPtn5L4Ue0o7qg3ni94kbcrfyq4w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/canary-kit@1.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":412205},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./sync":{"types":"./dist/sync.d.ts","import":"./dist/sync.js"},"./nostr":{"types":"./dist/nostr.d.ts","import":"./dist/nostr.js"},"./token":{"types":"./dist/token.d.ts","import":"./dist/token.js"},"./beacon":{"types":"./dist/beacon.d.ts","import":"./dist/beacon.js"},"./session":{"types":"./dist/session.d.ts","import":"./dist/session.js"},"./encoding":{"types":"./dist/encoding.d.ts","import":"./dist/encoding.js"},"./wordlist":{"types":"./dist/wordlist.d.ts","import":"./dist/wordlist.js"}},"gitHead":"c5715587147b5ddde13dcf83daff10dd30486c6f","scripts":{"dev":"vite --config vite.config.ts","demo":"npm run build:app && serve docs -l 8787","lint":"eslint src/","test":"vitest run","bench":"vitest bench","build":"tsc","record":"node docs/record/record.js","lint:fix":"eslint src/ --fix","test:e2e":"playwright test --config e2e/playwright.config.ts","build:app":"vite build --config vite.config.ts","typecheck":"tsc --noEmit","test:watch":"vitest","test:e2e:ui":"playwright test --config e2e/playwright.config.ts --ui","build:single":"vite build --config vite.singlefile.config.ts && cp dist-single/index.html canary.html && echo '✓ canary.html ready'","record:short":"node docs/record/record.js short","record:silent":"node docs/record/record.js --no-voice","record:extended":"node docs/record/record.js extended","test:e2e:online":"playwright test --config e2e/playwright.config.ts --project=online","test:e2e:offline":"playwright test --config e2e/playwright.config.ts --project=offline","test:e2e:protocol":"playwright test --config e2e/playwright.config.ts --project=protocol"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:79f19dca-7d54-468f-a217-4139cba18eab"}},"repository":{"url":"git+https://github.com/forgesworn/canary-kit.git","type":"git"},"_npmVersion":"11.11.0","description":"Deepfake-proof identity verification. Open protocol, minimal dependencies.","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","dependencies":{"@scure/bip32":"^2.0.1","@scure/bip39":"^2.0.1","spoken-token":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.19.0","vite":"^7.3.1","serve":"^14.2.5","eslint":"^10.0.3","vitest":"^3.0.0","@types/ws":"^8.18.1","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^25.3.3","geohash-kit":"^1.3.0","maplibre-gl":"^5.19.0","nostr-tools":"^2.23.3","@noble/curves":"^2.0.1","@noble/hashes":"^2.0.1","@playwright/test":"^1.58.2","qrcode-generator":"^2.0.4","semantic-release":"^25.0.0","typescript-eslint":"^8.57.0","@vitest/coverage-v8":"^3.2.4","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","vite-plugin-singlefile":"^2.3.0","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/canary-kit_1.2.0_1773850364755_0.5069538090982701","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"canary-kit","version":"1.3.0","keywords":["canary","canary-kit","verification","identity","duress","safe-word","nostr","hmac","totp","deepfake","voice-clone","meshtastic","liveness","dead-mans-switch","coercion-resistance","spoken-word","bidirectional-verification","offline-first","minimal-dependencies","voice-phishing","vishing","anti-fraud","phone-verification","family-safety"],"author":{"name":"forgesworn"},"license":"MIT","_id":"canary-kit@1.3.0","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://canary.trotters.cc/","bugs":{"url":"https://github.com/forgesworn/canary-kit/issues"},"dist":{"shasum":"868c1713d5261ce70750f2eb522d8196a8ed5555","tarball":"https://registry.npmjs.org/canary-kit/-/canary-kit-1.3.0.tgz","fileCount":69,"integrity":"sha512-gFqcleZQqOzftKmkaDwX9Khm2zV+SNziimz20kCrpWgPAEutVloubd8pb0in52+MFWJ7lv07t1ctXnFA1mXmWA==","signatures":[{"sig":"MEUCIQDli2gcfajOrdyA0uEgQpEY0z20B4sSG5FDMHZrQUOR9QIgEWS0CiQdvLZMIOcqfPbyI1AVtnWV1x8/WnfFscqLEkI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/canary-kit@1.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":412205},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./sync":{"types":"./dist/sync.d.ts","import":"./dist/sync.js"},"./nostr":{"types":"./dist/nostr.d.ts","import":"./dist/nostr.js"},"./token":{"types":"./dist/token.d.ts","import":"./dist/token.js"},"./beacon":{"types":"./dist/beacon.d.ts","import":"./dist/beacon.js"},"./session":{"types":"./dist/session.d.ts","import":"./dist/session.js"},"./encoding":{"types":"./dist/encoding.d.ts","import":"./dist/encoding.js"},"./wordlist":{"types":"./dist/wordlist.d.ts","import":"./dist/wordlist.js"}},"gitHead":"730c8996336ce35d39a441f48306f650a839d0ef","scripts":{"dev":"vite --config vite.config.ts","demo":"npm run build:app && serve docs -l 8787","lint":"eslint src/","test":"vitest run","bench":"vitest bench","build":"tsc","record":"node docs/record/record.js","lint:fix":"eslint src/ --fix","test:e2e":"playwright test --config e2e/playwright.config.ts","build:app":"vite build --config vite.config.ts","typecheck":"tsc --noEmit","test:watch":"vitest","test:e2e:ui":"playwright test --config e2e/playwright.config.ts --ui","build:single":"vite build --config vite.singlefile.config.ts && cp dist-single/index.html canary.html && echo '✓ canary.html ready'","record:short":"node docs/record/record.js short","record:silent":"node docs/record/record.js --no-voice","record:extended":"node docs/record/record.js extended","test:e2e:online":"playwright test --config e2e/playwright.config.ts --project=online","test:e2e:offline":"playwright test --config e2e/playwright.config.ts --project=offline","test:e2e:protocol":"playwright test --config e2e/playwright.config.ts --project=protocol"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:79f19dca-7d54-468f-a217-4139cba18eab"}},"repository":{"url":"git+https://github.com/forgesworn/canary-kit.git","type":"git"},"_npmVersion":"11.11.0","description":"Deepfake-proof identity verification. Open protocol, minimal dependencies.","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","dependencies":{"@scure/bip32":"^2.0.1","@scure/bip39":"^2.0.1","spoken-token":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.19.0","vite":"^7.3.1","serve":"^14.2.5","eslint":"^10.0.3","vitest":"^3.0.0","@types/ws":"^8.18.1","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^25.3.3","geohash-kit":"^1.3.0","maplibre-gl":"^5.19.0","nostr-tools":"^2.23.3","@noble/curves":"^2.0.1","@noble/hashes":"^2.0.1","@playwright/test":"^1.58.2","qrcode-generator":"^2.0.4","semantic-release":"^25.0.0","typescript-eslint":"^8.57.0","@vitest/coverage-v8":"^3.2.4","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","vite-plugin-singlefile":"^2.3.0","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/canary-kit_1.3.0_1773850748667_0.09105378781827889","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"canary-kit","version":"1.4.0","keywords":["canary","canary-kit","verification","identity","duress","safe-word","nostr","hmac","totp","deepfake","voice-clone","meshtastic","liveness","dead-mans-switch","coercion-resistance","spoken-word","bidirectional-verification","offline-first","minimal-dependencies","voice-phishing","vishing","anti-fraud","phone-verification","family-safety"],"author":{"name":"forgesworn"},"license":"MIT","_id":"canary-kit@1.4.0","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://canary.trotters.cc/","bugs":{"url":"https://github.com/forgesworn/canary-kit/issues"},"dist":{"shasum":"bc3efc57d66c46658d303c92b7696734ec2b37d5","tarball":"https://registry.npmjs.org/canary-kit/-/canary-kit-1.4.0.tgz","fileCount":69,"integrity":"sha512-DJwnEZHvQnQ4UjoFCMWAcwwbMQd718b69wF14Tur9ow6qhY40b+cG4rF18KlwBmH/rl6vT4JiPH4MUgRiPFvEw==","signatures":[{"sig":"MEUCIG+0SA1m/Mk2l/iBT9HdtsNVlzqeemGdB9FdSMGlKtlmAiEAqL8GUnLvO03P/6C3gBCA5P0jIhJLHcBkrZ6V3CwycwE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/canary-kit@1.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":412205},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./sync":{"types":"./dist/sync.d.ts","import":"./dist/sync.js"},"./nostr":{"types":"./dist/nostr.d.ts","import":"./dist/nostr.js"},"./token":{"types":"./dist/token.d.ts","import":"./dist/token.js"},"./beacon":{"types":"./dist/beacon.d.ts","import":"./dist/beacon.js"},"./session":{"types":"./dist/session.d.ts","import":"./dist/session.js"},"./encoding":{"types":"./dist/encoding.d.ts","import":"./dist/encoding.js"},"./wordlist":{"types":"./dist/wordlist.d.ts","import":"./dist/wordlist.js"}},"gitHead":"1ac1a227b4b602a4b4762f17146e8f3584e857fc","scripts":{"dev":"vite --config vite.config.ts","demo":"npm run build:app && serve docs -l 8787","lint":"eslint src/","test":"vitest run","bench":"vitest bench","build":"tsc","record":"node docs/record/record.js","lint:fix":"eslint src/ --fix","test:e2e":"playwright test --config e2e/playwright.config.ts","build:app":"vite build --config vite.config.ts","typecheck":"tsc --noEmit","test:watch":"vitest","test:e2e:ui":"playwright test --config e2e/playwright.config.ts --ui","build:single":"vite build --config vite.singlefile.config.ts && cp dist-single/index.html canary.html && echo '✓ canary.html ready'","record:short":"node docs/record/record.js short","record:silent":"node docs/record/record.js --no-voice","record:extended":"node docs/record/record.js extended","test:e2e:online":"playwright test --config e2e/playwright.config.ts --project=online","test:e2e:offline":"playwright test --config e2e/playwright.config.ts --project=offline","test:e2e:protocol":"playwright test --config e2e/playwright.config.ts --project=protocol"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:79f19dca-7d54-468f-a217-4139cba18eab"}},"repository":{"url":"git+https://github.com/forgesworn/canary-kit.git","type":"git"},"_npmVersion":"11.11.0","description":"Deepfake-proof identity verification. Open protocol, minimal dependencies.","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","dependencies":{"@scure/bip32":"^2.0.1","@scure/bip39":"^2.0.1","spoken-token":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.19.0","vite":"^7.3.1","serve":"^14.2.5","eslint":"^10.0.3","vitest":"^3.0.0","@types/ws":"^8.18.1","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^25.3.3","geohash-kit":"^1.3.0","maplibre-gl":"^5.19.0","nostr-tools":"^2.23.3","@noble/curves":"^2.0.1","@noble/hashes":"^2.0.1","@playwright/test":"^1.58.2","qrcode-generator":"^2.0.4","semantic-release":"^25.0.0","typescript-eslint":"^8.57.0","@vitest/coverage-v8":"^3.2.4","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","vite-plugin-singlefile":"^2.3.0","@semantic-release/github":"^11.0.0","@semantic-release/changelog":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/canary-kit_1.4.0_1773851067023_0.6170863554077286","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"canary-kit","version":"2.0.0","keywords":["canary","canary-kit","verification","identity","duress","safe-word","nostr","hmac","totp","deepfake","voice-clone","meshtastic","liveness","dead-mans-switch","coercion-resistance","spoken-word","bidirectional-verification","offline-first","minimal-dependencies","voice-phishing","vishing","anti-fraud","phone-verification","family-safety"],"author":{"name":"forgesworn"},"license":"MIT","_id":"canary-kit@2.0.0","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://canary.trotters.cc/","bugs":{"url":"https://github.com/forgesworn/canary-kit/issues"},"dist":{"shasum":"1d2eb28de2343d9946186581c0ef17456a042cc7","tarball":"https://registry.npmjs.org/canary-kit/-/canary-kit-2.0.0.tgz","fileCount":69,"integrity":"sha512-rOChQiMefhLPBAGzAzDrbfFUAJclavIkplQbVbKFqqHPC+hnnT33Lc6CB2Q93E9E8rG7y6N84XZn7Yxxv+rd+w==","signatures":[{"sig":"MEYCIQCEBcTlnDSa4/t1lOW84oBuk8h08RjvBqVJ2n5YjNiRswIhAO33l9DDXJIVOVDKBz97OJFG2uXaj1TULfjHz3tpEvIA","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/canary-kit@2.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":413505},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./sync":{"types":"./dist/sync.d.ts","import":"./dist/sync.js"},"./nostr":{"types":"./dist/nostr.d.ts","import":"./dist/nostr.js"},"./token":{"types":"./dist/token.d.ts","import":"./dist/token.js"},"./beacon":{"types":"./dist/beacon.d.ts","import":"./dist/beacon.js"},"./session":{"types":"./dist/session.d.ts","import":"./dist/session.js"},"./encoding":{"types":"./dist/encoding.d.ts","import":"./dist/encoding.js"},"./wordlist":{"types":"./dist/wordlist.d.ts","import":"./dist/wordlist.js"}},"gitHead":"3c021ca52213ba6178717674d01f9579e7fa0c56","scripts":{"dev":"vite --config vite.config.ts","demo":"npm run build:app && serve docs -l 8787","lint":"eslint src/","test":"vitest run","bench":"vitest bench","build":"tsc","record":"node docs/record/record.js","lint:fix":"eslint src/ --fix","test:e2e":"playwright test --config e2e/playwright.config.ts","build:app":"vite build --config vite.config.ts","typecheck":"tsc --noEmit","test:watch":"vitest","test:e2e:ui":"playwright test --config e2e/playwright.config.ts --ui","build:single":"vite build --config vite.singlefile.config.ts && cp dist-single/index.html canary.html && echo '✓ canary.html ready'","record:short":"node docs/record/record.js short","record:silent":"node docs/record/record.js --no-voice","record:extended":"node docs/record/record.js extended","test:e2e:online":"playwright test --config e2e/playwright.config.ts --project=online","test:e2e:offline":"playwright test --config e2e/playwright.config.ts --project=offline","test:e2e:protocol":"playwright test --config e2e/playwright.config.ts --project=protocol"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:79f19dca-7d54-468f-a217-4139cba18eab"}},"repository":{"url":"git+https://github.com/forgesworn/canary-kit.git","type":"git"},"_npmVersion":"11.11.0","description":"Deepfake-proof identity verification. Open protocol, minimal dependencies.","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","dependencies":{"nsec-tree":"^1.1.0","@scure/bip32":"^2.0.1","@scure/bip39":"^2.0.1","spoken-token":"^2.0.2"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.19.0","vite":"^8.0.0","serve":"^14.2.6","eslint":"^10.0.3","vitest":"^4.1.0","@types/ws":"^8.18.1","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^24.12.0","geohash-kit":"^1.5.1","maplibre-gl":"^5.20.2","nostr-tools":"^2.23.3","@noble/curves":"^2.0.1","@noble/hashes":"^2.0.1","@playwright/test":"^1.58.2","qrcode-generator":"^2.0.4","semantic-release":"^25.0.0","typescript-eslint":"^8.57.1","@vitest/coverage-v8":"^4.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","vite-plugin-singlefile":"^2.3.2","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/canary-kit_2.0.0_1773871090356_0.12533647148750826","host":"s3://npm-registry-packages-npm-production"}},"2.1.0":{"name":"canary-kit","version":"2.1.0","keywords":["canary","canary-kit","verification","identity","duress","safe-word","nostr","hmac","totp","deepfake","voice-clone","meshtastic","liveness","dead-mans-switch","coercion-resistance","spoken-word","bidirectional-verification","offline-first","minimal-dependencies","voice-phishing","vishing","anti-fraud","phone-verification","family-safety"],"author":{"name":"forgesworn"},"license":"MIT","_id":"canary-kit@2.1.0","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://canary.trotters.cc/","bugs":{"url":"https://github.com/forgesworn/canary-kit/issues"},"dist":{"shasum":"e093c2d622e5de57144101d7dbcb11a6b37a5afe","tarball":"https://registry.npmjs.org/canary-kit/-/canary-kit-2.1.0.tgz","fileCount":69,"integrity":"sha512-ovxoUpXeBOvJxm8v5/XBnfPdp7NOmoouPs+1fupT3cxl688qw5VjszArK2/uKr5eSIIa/YKA6aiAO0Igfl1UIg==","signatures":[{"sig":"MEYCIQDpnWsI3SHxCEwAfLIbMUTXV1zVU637kKTplvxypof/fAIhAMuoLZvkNP1Zph0BssXfpB4qHGBjpAzsztaCIbuHHCOe","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/canary-kit@2.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":413547},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./sync":{"types":"./dist/sync.d.ts","import":"./dist/sync.js"},"./nostr":{"types":"./dist/nostr.d.ts","import":"./dist/nostr.js"},"./token":{"types":"./dist/token.d.ts","import":"./dist/token.js"},"./beacon":{"types":"./dist/beacon.d.ts","import":"./dist/beacon.js"},"./session":{"types":"./dist/session.d.ts","import":"./dist/session.js"},"./encoding":{"types":"./dist/encoding.d.ts","import":"./dist/encoding.js"},"./wordlist":{"types":"./dist/wordlist.d.ts","import":"./dist/wordlist.js"}},"gitHead":"0614991fb9e5d1e2ef23edbb2521a91061f7fc57","scripts":{"dev":"vite --config vite.config.ts","demo":"npm run build:app && serve docs -l 8787","lint":"eslint src/","test":"vitest run","bench":"vitest bench","build":"tsc","record":"node docs/record/record.js","lint:fix":"eslint src/ --fix","test:e2e":"playwright test --config e2e/playwright.config.ts","build:app":"vite build --config vite.config.ts","typecheck":"tsc --noEmit","test:watch":"vitest","test:e2e:ui":"playwright test --config e2e/playwright.config.ts --ui","build:single":"vite build --config vite.singlefile.config.ts && cp dist-single/index.html canary.html && echo '✓ canary.html ready'","record:short":"node docs/record/record.js short","record:silent":"node docs/record/record.js --no-voice","record:extended":"node docs/record/record.js extended","test:e2e:online":"playwright test --config e2e/playwright.config.ts --project=online","test:e2e:offline":"playwright test --config e2e/playwright.config.ts --project=offline","test:e2e:protocol":"playwright test --config e2e/playwright.config.ts --project=protocol"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:79f19dca-7d54-468f-a217-4139cba18eab"}},"repository":{"url":"git+https://github.com/forgesworn/canary-kit.git","type":"git"},"_npmVersion":"11.11.0","description":"Deepfake-proof identity verification. Open protocol, minimal dependencies.","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","dependencies":{"nsec-tree":"^1.1.0","@scure/bip32":"^2.0.1","@scure/bip39":"^2.0.1","spoken-token":"^2.0.2","@forgesworn/shamir-words":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.19.0","vite":"^8.0.0","serve":"^14.2.6","eslint":"^10.0.3","vitest":"^4.1.0","@types/ws":"^8.18.1","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^24.12.0","geohash-kit":"^1.5.1","maplibre-gl":"^5.20.2","nostr-tools":"^2.23.3","@noble/curves":"^2.0.1","@noble/hashes":"^2.0.1","@playwright/test":"^1.58.2","qrcode-generator":"^2.0.4","semantic-release":"^25.0.0","typescript-eslint":"^8.57.1","@vitest/coverage-v8":"^4.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","vite-plugin-singlefile":"^2.3.2","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/canary-kit_2.1.0_1773871972370_0.5377710570351699","host":"s3://npm-registry-packages-npm-production"}},"2.2.0":{"name":"canary-kit","version":"2.2.0","keywords":["canary","canary-kit","verification","identity","duress","safe-word","nostr","hmac","totp","deepfake","voice-clone","meshtastic","liveness","dead-mans-switch","coercion-resistance","spoken-word","bidirectional-verification","offline-first","minimal-dependencies","voice-phishing","vishing","anti-fraud","phone-verification","family-safety"],"author":{"name":"forgesworn"},"license":"MIT","_id":"canary-kit@2.2.0","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://canary.trotters.cc/","bugs":{"url":"https://github.com/forgesworn/canary-kit/issues"},"dist":{"shasum":"555244c79050d6de57a971e3bc18de9c75f7f08b","tarball":"https://registry.npmjs.org/canary-kit/-/canary-kit-2.2.0.tgz","fileCount":69,"integrity":"sha512-uY2zGUtoar42YpihskT7SJe8PFFZ1p2rhUzLuEDcenVCdI4rZbFBR4d8oxkKbYZCkaM5ahRTOJR5Rt7xGkErgA==","signatures":[{"sig":"MEQCIDJH526G1kqiVhWcauTKnPuWJazxRIcnXJW9emYJA7d9AiBXH22kEBUXEMLgXNS4vJy2GTIN54W1PP6BmKGkKs8pUg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/canary-kit@2.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":413547},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./sync":{"types":"./dist/sync.d.ts","import":"./dist/sync.js"},"./nostr":{"types":"./dist/nostr.d.ts","import":"./dist/nostr.js"},"./token":{"types":"./dist/token.d.ts","import":"./dist/token.js"},"./beacon":{"types":"./dist/beacon.d.ts","import":"./dist/beacon.js"},"./session":{"types":"./dist/session.d.ts","import":"./dist/session.js"},"./encoding":{"types":"./dist/encoding.d.ts","import":"./dist/encoding.js"},"./wordlist":{"types":"./dist/wordlist.d.ts","import":"./dist/wordlist.js"}},"gitHead":"2b8c5b128068ff5607706af5f60afadb922de8c5","scripts":{"dev":"vite --config vite.config.ts","demo":"npm run build:app && serve docs -l 8787","lint":"eslint src/","test":"vitest run","bench":"vitest bench","build":"tsc","record":"node docs/record/record.js","lint:fix":"eslint src/ --fix","test:e2e":"playwright test --config e2e/playwright.config.ts","build:app":"vite build --config vite.config.ts","typecheck":"tsc --noEmit","test:watch":"vitest","test:e2e:ui":"playwright test --config e2e/playwright.config.ts --ui","build:single":"vite build --config vite.singlefile.config.ts && cp dist-single/index.html canary.html && echo '✓ canary.html ready'","record:short":"node docs/record/record.js short","record:silent":"node docs/record/record.js --no-voice","record:extended":"node docs/record/record.js extended","test:e2e:online":"playwright test --config e2e/playwright.config.ts --project=online","test:e2e:offline":"playwright test --config e2e/playwright.config.ts --project=offline","test:e2e:protocol":"playwright test --config e2e/playwright.config.ts --project=protocol"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:79f19dca-7d54-468f-a217-4139cba18eab"}},"repository":{"url":"git+https://github.com/forgesworn/canary-kit.git","type":"git"},"_npmVersion":"11.11.0","description":"Deepfake-proof identity verification. Open protocol, minimal dependencies.","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","dependencies":{"nsec-tree":"^1.1.0","@scure/bip32":"^2.0.1","@scure/bip39":"^2.0.1","spoken-token":"^2.0.2","@forgesworn/shamir-words":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.19.0","vite":"^8.0.0","serve":"^14.2.6","eslint":"^10.0.3","vitest":"^4.1.0","@types/ws":"^8.18.1","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^24.12.0","geohash-kit":"^1.5.1","maplibre-gl":"^5.20.2","nostr-tools":"^2.23.3","@noble/curves":"^2.0.1","@noble/hashes":"^2.0.1","@playwright/test":"^1.58.2","qrcode-generator":"^2.0.4","semantic-release":"^25.0.0","typescript-eslint":"^8.57.1","@vitest/coverage-v8":"^4.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","vite-plugin-singlefile":"^2.3.2","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/canary-kit_2.2.0_1773872819405_0.6539104446800323","host":"s3://npm-registry-packages-npm-production"}},"2.2.1":{"name":"canary-kit","version":"2.2.1","keywords":["canary","canary-kit","verification","identity","duress","safe-word","nostr","hmac","totp","deepfake","voice-clone","meshtastic","liveness","dead-mans-switch","coercion-resistance","spoken-word","bidirectional-verification","offline-first","minimal-dependencies","voice-phishing","vishing","anti-fraud","phone-verification","family-safety"],"author":{"name":"forgesworn"},"license":"MIT","_id":"canary-kit@2.2.1","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://canary.trotters.cc/","bugs":{"url":"https://github.com/forgesworn/canary-kit/issues"},"dist":{"shasum":"92cd0f41e0f02ea6fe23aa709c1f73b8d8c874d8","tarball":"https://registry.npmjs.org/canary-kit/-/canary-kit-2.2.1.tgz","fileCount":69,"integrity":"sha512-pNSeoeVxRQfmP8OF77hoBJZOIIDHy5JagL4QQ+zO46JqZxHJMUXq9NRQmBggktOTG38ukERxUPwo1xKRB6dD/A==","signatures":[{"sig":"MEUCIH84/G2GTAnfAuHAyOIp1DXa9YWxqxX/jWbZeehNaM/+AiEAnDUgUSQBQ74IBR8y4rPWxCWmgNDwfJItmAiuIPyb/TU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/canary-kit@2.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":413547},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./sync":{"types":"./dist/sync.d.ts","import":"./dist/sync.js"},"./nostr":{"types":"./dist/nostr.d.ts","import":"./dist/nostr.js"},"./token":{"types":"./dist/token.d.ts","import":"./dist/token.js"},"./beacon":{"types":"./dist/beacon.d.ts","import":"./dist/beacon.js"},"./session":{"types":"./dist/session.d.ts","import":"./dist/session.js"},"./encoding":{"types":"./dist/encoding.d.ts","import":"./dist/encoding.js"},"./wordlist":{"types":"./dist/wordlist.d.ts","import":"./dist/wordlist.js"}},"gitHead":"afe0ff26533b7fc620011871dd3d29f465926f8a","scripts":{"dev":"vite --config vite.config.ts","demo":"npm run build:app && serve docs -l 8787","lint":"eslint src/","test":"vitest run","bench":"vitest bench","build":"tsc","record":"node docs/record/record.js","lint:fix":"eslint src/ --fix","test:e2e":"playwright test --config e2e/playwright.config.ts","build:app":"vite build --config vite.config.ts","typecheck":"tsc --noEmit","test:watch":"vitest","test:e2e:ui":"playwright test --config e2e/playwright.config.ts --ui","build:single":"vite build --config vite.singlefile.config.ts && cp dist-single/index.html canary.html && echo '✓ canary.html ready'","record:short":"node docs/record/record.js short","record:silent":"node docs/record/record.js --no-voice","record:extended":"node docs/record/record.js extended","test:e2e:online":"playwright test --config e2e/playwright.config.ts --project=online","test:e2e:offline":"playwright test --config e2e/playwright.config.ts --project=offline","test:e2e:protocol":"playwright test --config e2e/playwright.config.ts --project=protocol"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:79f19dca-7d54-468f-a217-4139cba18eab"}},"repository":{"url":"git+https://github.com/forgesworn/canary-kit.git","type":"git"},"_npmVersion":"11.11.0","description":"Deepfake-proof identity verification. Open protocol, minimal dependencies.","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","dependencies":{"nsec-tree":"^1.1.0","@scure/bip32":"^2.0.1","@scure/bip39":"^2.0.1","spoken-token":"^2.0.2","@forgesworn/shamir-words":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.19.0","vite":"^8.0.0","serve":"^14.2.6","eslint":"^10.0.3","vitest":"^4.1.0","@types/ws":"^8.18.1","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^24.12.0","geohash-kit":"^1.5.1","maplibre-gl":"^5.20.2","nostr-tools":"^2.23.3","@noble/curves":"^2.0.1","@noble/hashes":"^2.0.1","@playwright/test":"^1.58.2","qrcode-generator":"^2.0.4","semantic-release":"^25.0.0","typescript-eslint":"^8.57.1","@vitest/coverage-v8":"^4.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","vite-plugin-singlefile":"^2.3.2","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/canary-kit_2.2.1_1773873090608_0.3099174305407921","host":"s3://npm-registry-packages-npm-production"}},"2.2.2":{"name":"canary-kit","version":"2.2.2","keywords":["canary","canary-kit","verification","identity","duress","safe-word","nostr","hmac","totp","deepfake","voice-clone","meshtastic","liveness","dead-mans-switch","coercion-resistance","spoken-word","bidirectional-verification","offline-first","minimal-dependencies","voice-phishing","vishing","anti-fraud","phone-verification","family-safety"],"author":{"name":"forgesworn"},"license":"MIT","_id":"canary-kit@2.2.2","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://canary.trotters.cc/","bugs":{"url":"https://github.com/forgesworn/canary-kit/issues"},"dist":{"shasum":"a007f626436773c1ce79b3a7036db4a6dcc3f5a9","tarball":"https://registry.npmjs.org/canary-kit/-/canary-kit-2.2.2.tgz","fileCount":69,"integrity":"sha512-+kwWrEYBSdu5qvvODs/AoegRfmbt7LBe3bOD9vK7TmUFeEcot7QYBobYiaQtBnxNuNz+HLIfj2/+o37uqyo1cA==","signatures":[{"sig":"MEQCIAiHBlih7posTk2sC+ett2NJjACPlJ602YC2Zjw7DI+zAiBUFefzys7zlG3bLtouuyFFTf/SVQY0+21HpL7m03q0Mw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/canary-kit@2.2.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":413547},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./sync":{"types":"./dist/sync.d.ts","import":"./dist/sync.js"},"./nostr":{"types":"./dist/nostr.d.ts","import":"./dist/nostr.js"},"./token":{"types":"./dist/token.d.ts","import":"./dist/token.js"},"./beacon":{"types":"./dist/beacon.d.ts","import":"./dist/beacon.js"},"./session":{"types":"./dist/session.d.ts","import":"./dist/session.js"},"./encoding":{"types":"./dist/encoding.d.ts","import":"./dist/encoding.js"},"./wordlist":{"types":"./dist/wordlist.d.ts","import":"./dist/wordlist.js"}},"gitHead":"b729eac2f84308abb78f8cef83d83d95b05648fa","scripts":{"dev":"vite --config vite.config.ts","demo":"npm run build:app && serve docs -l 8787","lint":"eslint src/","test":"vitest run","bench":"vitest bench","build":"tsc","record":"node docs/record/record.js","lint:fix":"eslint src/ --fix","test:e2e":"playwright test --config e2e/playwright.config.ts","build:app":"vite build --config vite.config.ts","typecheck":"tsc --noEmit","test:watch":"vitest","test:e2e:ui":"playwright test --config e2e/playwright.config.ts --ui","build:single":"vite build --config vite.singlefile.config.ts && cp dist-single/index.html canary.html && echo '✓ canary.html ready'","record:short":"node docs/record/record.js short","record:silent":"node docs/record/record.js --no-voice","record:extended":"node docs/record/record.js extended","test:e2e:online":"playwright test --config e2e/playwright.config.ts --project=online","test:e2e:offline":"playwright test --config e2e/playwright.config.ts --project=offline","test:e2e:protocol":"playwright test --config e2e/playwright.config.ts --project=protocol"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:79f19dca-7d54-468f-a217-4139cba18eab"}},"repository":{"url":"git+https://github.com/forgesworn/canary-kit.git","type":"git"},"_npmVersion":"11.11.0","description":"Deepfake-proof identity verification. Open protocol, minimal dependencies.","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","dependencies":{"nsec-tree":"^1.1.0","@scure/bip32":"^2.0.1","@scure/bip39":"^2.0.1","spoken-token":"^2.0.2","@forgesworn/shamir-words":"^1.0.2"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.19.0","vite":"^8.0.0","serve":"^14.2.6","eslint":"^10.0.3","vitest":"^4.1.0","@types/ws":"^8.18.1","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^24.12.0","geohash-kit":"^1.5.1","maplibre-gl":"^5.20.2","nostr-tools":"^2.23.3","@noble/curves":"^2.0.1","@noble/hashes":"^2.0.1","@playwright/test":"^1.58.2","qrcode-generator":"^2.0.4","semantic-release":"^25.0.0","typescript-eslint":"^8.57.1","@vitest/coverage-v8":"^4.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","vite-plugin-singlefile":"^2.3.2","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/canary-kit_2.2.2_1773874418230_0.8696735979050922","host":"s3://npm-registry-packages-npm-production"}},"2.3.0":{"name":"canary-kit","version":"2.3.0","keywords":["canary","canary-kit","verification","identity","duress","safe-word","nostr","hmac","totp","deepfake","voice-clone","meshtastic","liveness","dead-mans-switch","coercion-resistance","spoken-word","bidirectional-verification","offline-first","minimal-dependencies","voice-phishing","vishing","anti-fraud","phone-verification","family-safety"],"author":{"name":"forgesworn"},"license":"MIT","_id":"canary-kit@2.3.0","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://canary.trotters.cc/","bugs":{"url":"https://github.com/forgesworn/canary-kit/issues"},"dist":{"shasum":"6fe508e35d7b251210770d59a34d980dffeb32af","tarball":"https://registry.npmjs.org/canary-kit/-/canary-kit-2.3.0.tgz","fileCount":69,"integrity":"sha512-xcP6OEOnXnkzsy9Jq37wjdDwlaRudZAKxqofcz9Jh7oW1st4PUoK3q3lfk2LZY1yWTXH1aiyccD+QNr3kUo4+g==","signatures":[{"sig":"MEUCIQCDIQ7k4esERVGYRqVif3LT9rmTKAWmJREpuH/KfDHyOgIgfnuJOCHctaBEFyxl5NoQarSvrvvOUfjcUT1bacQUAkI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/canary-kit@2.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":413547},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./sync":{"types":"./dist/sync.d.ts","import":"./dist/sync.js"},"./nostr":{"types":"./dist/nostr.d.ts","import":"./dist/nostr.js"},"./token":{"types":"./dist/token.d.ts","import":"./dist/token.js"},"./beacon":{"types":"./dist/beacon.d.ts","import":"./dist/beacon.js"},"./session":{"types":"./dist/session.d.ts","import":"./dist/session.js"},"./encoding":{"types":"./dist/encoding.d.ts","import":"./dist/encoding.js"},"./wordlist":{"types":"./dist/wordlist.d.ts","import":"./dist/wordlist.js"}},"gitHead":"4d7f10b60fc12f867047a293cfe3a44dffbe7b50","scripts":{"dev":"vite --config vite.config.ts","demo":"npm run build:app && serve docs -l 8787","lint":"eslint src/","test":"vitest run","bench":"vitest bench","build":"tsc","record":"node docs/record/record.js","lint:fix":"eslint src/ --fix","test:e2e":"playwright test --config e2e/playwright.config.ts","build:app":"vite build --config vite.config.ts","typecheck":"tsc --noEmit","test:watch":"vitest","test:e2e:ui":"playwright test --config e2e/playwright.config.ts --ui","build:single":"vite build --config vite.singlefile.config.ts && cp dist-single/index.html canary.html && echo '✓ canary.html ready'","record:short":"node docs/record/record.js short","record:silent":"node docs/record/record.js --no-voice","record:extended":"node docs/record/record.js extended","test:e2e:online":"playwright test --config e2e/playwright.config.ts --project=online","test:e2e:offline":"playwright test --config e2e/playwright.config.ts --project=offline","test:e2e:protocol":"playwright test --config e2e/playwright.config.ts --project=protocol"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:79f19dca-7d54-468f-a217-4139cba18eab"}},"repository":{"url":"git+https://github.com/forgesworn/canary-kit.git","type":"git"},"_npmVersion":"11.11.0","description":"Deepfake-proof identity verification. Open protocol, minimal dependencies.","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","dependencies":{"nsec-tree":"^1.1.0","@scure/bip32":"^2.0.1","@scure/bip39":"^2.0.1","spoken-token":"^2.0.2","@forgesworn/shamir-words":"^1.0.2"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.19.0","vite":"^8.0.0","serve":"^14.2.6","eslint":"^10.0.3","vitest":"^4.1.0","@types/ws":"^8.18.1","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^24.12.0","geohash-kit":"^1.5.1","maplibre-gl":"^5.20.2","nostr-tools":"^2.23.3","@noble/curves":"^2.0.1","@noble/hashes":"^2.0.1","@playwright/test":"^1.58.2","qrcode-generator":"^2.0.4","semantic-release":"^25.0.0","typescript-eslint":"^8.57.1","@vitest/coverage-v8":"^4.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","vite-plugin-singlefile":"^2.3.2","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/canary-kit_2.3.0_1773874824676_0.8675945623898444","host":"s3://npm-registry-packages-npm-production"}},"2.4.0":{"name":"canary-kit","version":"2.4.0","keywords":["canary","canary-kit","verification","identity","duress","safe-word","nostr","hmac","totp","deepfake","voice-clone","meshtastic","liveness","dead-mans-switch","coercion-resistance","spoken-word","bidirectional-verification","offline-first","minimal-dependencies","voice-phishing","vishing","anti-fraud","phone-verification","family-safety"],"author":{"name":"forgesworn"},"license":"MIT","_id":"canary-kit@2.4.0","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://canary.trotters.cc/","bugs":{"url":"https://github.com/forgesworn/canary-kit/issues"},"dist":{"shasum":"12dcc3b1524146f56ebff5c481247b03511f61e4","tarball":"https://registry.npmjs.org/canary-kit/-/canary-kit-2.4.0.tgz","fileCount":69,"integrity":"sha512-Kg5Se1Meg0zDXh2cgpdozudNyeMeiLWdaTUafRFbOZJmwyT8mpqPv2tRXpbLcrujm9Hl+4LvrBiiPj3RhOcj2g==","signatures":[{"sig":"MEUCICMnfblWKXguFNFEd9knrHaj5T5nooBUQg6CB9Gb5dqsAiEAnavqS2T/uMn9z6efbqheVLYQlOF7niH1NP/D/dzfdn0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/canary-kit@2.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":413547},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./sync":{"types":"./dist/sync.d.ts","import":"./dist/sync.js"},"./nostr":{"types":"./dist/nostr.d.ts","import":"./dist/nostr.js"},"./token":{"types":"./dist/token.d.ts","import":"./dist/token.js"},"./beacon":{"types":"./dist/beacon.d.ts","import":"./dist/beacon.js"},"./session":{"types":"./dist/session.d.ts","import":"./dist/session.js"},"./encoding":{"types":"./dist/encoding.d.ts","import":"./dist/encoding.js"},"./wordlist":{"types":"./dist/wordlist.d.ts","import":"./dist/wordlist.js"}},"gitHead":"9451577561a90e7b2805be1e2725767453d134ab","scripts":{"dev":"vite --config vite.config.ts","demo":"npm run build:app && serve docs -l 8787","lint":"eslint src/","test":"vitest run","bench":"vitest bench","build":"tsc","record":"node docs/record/record.js","lint:fix":"eslint src/ --fix","test:e2e":"playwright test --config e2e/playwright.config.ts","build:app":"vite build --config vite.config.ts","typecheck":"tsc --noEmit","test:watch":"vitest","test:e2e:ui":"playwright test --config e2e/playwright.config.ts --ui","build:single":"vite build --config vite.singlefile.config.ts && cp dist-single/index.html canary.html && echo '✓ canary.html ready'","record:short":"node docs/record/record.js short","record:silent":"node docs/record/record.js --no-voice","record:extended":"node docs/record/record.js extended","test:e2e:online":"playwright test --config e2e/playwright.config.ts --project=online","test:e2e:offline":"playwright test --config e2e/playwright.config.ts --project=offline","test:e2e:protocol":"playwright test --config e2e/playwright.config.ts --project=protocol"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:79f19dca-7d54-468f-a217-4139cba18eab"}},"repository":{"url":"git+https://github.com/forgesworn/canary-kit.git","type":"git"},"_npmVersion":"11.11.0","description":"Deepfake-proof identity verification. Open protocol, minimal dependencies.","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","dependencies":{"nsec-tree":"^1.4.0","@scure/bip32":"^2.0.1","@scure/bip39":"^2.0.1","spoken-token":"^2.0.2","@forgesworn/shamir-words":"^1.0.2"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.19.0","vite":"^8.0.0","serve":"^14.2.6","eslint":"^10.0.3","vitest":"^4.1.0","@types/ws":"^8.18.1","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^24.12.0","geohash-kit":"^1.5.1","maplibre-gl":"^5.20.2","nostr-tools":"^2.23.3","@noble/curves":"^2.0.1","@noble/hashes":"^2.0.1","@playwright/test":"^1.58.2","qrcode-generator":"^2.0.4","semantic-release":"^25.0.0","typescript-eslint":"^8.57.1","@vitest/coverage-v8":"^4.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","vite-plugin-singlefile":"^2.3.2","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/canary-kit_2.4.0_1773877804836_0.20772152868813798","host":"s3://npm-registry-packages-npm-production"}},"2.5.0":{"name":"canary-kit","version":"2.5.0","keywords":["canary","canary-kit","verification","identity","duress","safe-word","nostr","hmac","totp","deepfake","voice-clone","meshtastic","liveness","dead-mans-switch","coercion-resistance","spoken-word","bidirectional-verification","offline-first","minimal-dependencies","voice-phishing","vishing","anti-fraud","phone-verification","family-safety"],"author":{"name":"forgesworn"},"license":"MIT","_id":"canary-kit@2.5.0","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://canary.trotters.cc/","bugs":{"url":"https://github.com/forgesworn/canary-kit/issues"},"dist":{"shasum":"0cbb6cf8dcfe1a78bf2cd498855fb6da457ec9b8","tarball":"https://registry.npmjs.org/canary-kit/-/canary-kit-2.5.0.tgz","fileCount":69,"integrity":"sha512-xSQ733xFTJCUVhHQFnoA4PsPY4Oc8ll0vT1VP7TPxRhQxWKVjGCheHKBiBmiTYbgYfa+eacdcPChO/Ct8DzelQ==","signatures":[{"sig":"MEUCIQDzwptqL7Omuzut8fIexWeqC38ycvkgTpex1/VuiNr1+AIgLSf22VC6Xg+hAobVcgujjOGtf5ck3o17N7qTIVWFfpc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/canary-kit@2.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":413547},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./sync":{"types":"./dist/sync.d.ts","import":"./dist/sync.js"},"./nostr":{"types":"./dist/nostr.d.ts","import":"./dist/nostr.js"},"./token":{"types":"./dist/token.d.ts","import":"./dist/token.js"},"./beacon":{"types":"./dist/beacon.d.ts","import":"./dist/beacon.js"},"./session":{"types":"./dist/session.d.ts","import":"./dist/session.js"},"./encoding":{"types":"./dist/encoding.d.ts","import":"./dist/encoding.js"},"./wordlist":{"types":"./dist/wordlist.d.ts","import":"./dist/wordlist.js"}},"gitHead":"822b4a09eb3dcb97c82ca67894c8693d1bb17b3b","scripts":{"dev":"vite --config vite.config.ts","demo":"npm run build:app && serve docs -l 8787","lint":"eslint src/","test":"vitest run","bench":"vitest bench","build":"tsc","record":"node docs/record/record.js","lint:fix":"eslint src/ --fix","test:e2e":"playwright test --config e2e/playwright.config.ts","build:app":"vite build --config vite.config.ts","typecheck":"tsc --noEmit","test:watch":"vitest","test:e2e:ui":"playwright test --config e2e/playwright.config.ts --ui","build:single":"vite build --config vite.singlefile.config.ts && cp dist-single/index.html canary.html && echo '✓ canary.html ready'","record:short":"node docs/record/record.js short","record:silent":"node docs/record/record.js --no-voice","record:extended":"node docs/record/record.js extended","test:e2e:online":"playwright test --config e2e/playwright.config.ts --project=online","test:e2e:offline":"playwright test --config e2e/playwright.config.ts --project=offline","test:e2e:protocol":"playwright test --config e2e/playwright.config.ts --project=protocol"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:79f19dca-7d54-468f-a217-4139cba18eab"}},"repository":{"url":"git+https://github.com/forgesworn/canary-kit.git","type":"git"},"_npmVersion":"11.11.0","description":"Deepfake-proof identity verification. Open protocol, minimal dependencies.","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","dependencies":{"nsec-tree":"^1.4.0","@scure/bip32":"^2.0.1","@scure/bip39":"^2.0.1","spoken-token":"^2.0.2","@forgesworn/shamir-words":"^1.0.2"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.19.0","vite":"^8.0.0","serve":"^14.2.6","eslint":"^10.0.3","vitest":"^4.1.0","@types/ws":"^8.18.1","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^24.12.0","geohash-kit":"^1.5.1","maplibre-gl":"^5.20.2","nostr-tools":"^2.23.3","@noble/curves":"^2.0.1","@noble/hashes":"^2.0.1","@playwright/test":"^1.58.2","qrcode-generator":"^2.0.4","semantic-release":"^25.0.0","typescript-eslint":"^8.57.1","@vitest/coverage-v8":"^4.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","vite-plugin-singlefile":"^2.3.2","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/canary-kit_2.5.0_1773880251824_0.2745788200985926","host":"s3://npm-registry-packages-npm-production"}},"2.5.1":{"name":"canary-kit","version":"2.5.1","keywords":["canary","canary-kit","verification","identity","duress","safe-word","nostr","hmac","totp","deepfake","voice-clone","meshtastic","liveness","dead-mans-switch","coercion-resistance","spoken-word","bidirectional-verification","offline-first","minimal-dependencies","voice-phishing","vishing","anti-fraud","phone-verification","family-safety"],"author":{"name":"forgesworn"},"license":"MIT","_id":"canary-kit@2.5.1","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://canary.trotters.cc/","bugs":{"url":"https://github.com/forgesworn/canary-kit/issues"},"dist":{"shasum":"eb3dc5f53ef27274fec0497a5c22f92e2829c30f","tarball":"https://registry.npmjs.org/canary-kit/-/canary-kit-2.5.1.tgz","fileCount":69,"integrity":"sha512-WH5+fRvtecwGE/MvYAVLfUrcqJwIzn3/GrMP7/aE/UBmSdWvfkxX2IRDXAncMUJTiwhUAadxE6zCpgUPNmeK/w==","signatures":[{"sig":"MEUCICH64jGBUuWZOqEFq0XDA48m9nbqZZvwIbQSzF2TsN40AiEAmEejWKfrJp+flkXpYVQpPDAWAzZhxDs7TxJbWliSuAM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/canary-kit@2.5.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":413547},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./sync":{"types":"./dist/sync.d.ts","import":"./dist/sync.js"},"./nostr":{"types":"./dist/nostr.d.ts","import":"./dist/nostr.js"},"./token":{"types":"./dist/token.d.ts","import":"./dist/token.js"},"./beacon":{"types":"./dist/beacon.d.ts","import":"./dist/beacon.js"},"./session":{"types":"./dist/session.d.ts","import":"./dist/session.js"},"./encoding":{"types":"./dist/encoding.d.ts","import":"./dist/encoding.js"},"./wordlist":{"types":"./dist/wordlist.d.ts","import":"./dist/wordlist.js"}},"gitHead":"e6aa37b40152c71e7ac5ab4ae48e920045ccb8a6","scripts":{"dev":"vite --config vite.config.ts","demo":"npm run build:app && serve docs -l 8787","lint":"eslint src/","test":"vitest run","bench":"vitest bench","build":"tsc","record":"node docs/record/record.js","lint:fix":"eslint src/ --fix","test:e2e":"playwright test --config e2e/playwright.config.ts","build:app":"vite build --config vite.config.ts","typecheck":"tsc --noEmit","test:watch":"vitest","test:e2e:ui":"playwright test --config e2e/playwright.config.ts --ui","build:single":"vite build --config vite.singlefile.config.ts && cp dist-single/index.html canary.html && echo '✓ canary.html ready'","record:short":"node docs/record/record.js short","record:silent":"node docs/record/record.js --no-voice","record:extended":"node docs/record/record.js extended","test:e2e:online":"playwright test --config e2e/playwright.config.ts --project=online","test:e2e:offline":"playwright test --config e2e/playwright.config.ts --project=offline","test:e2e:protocol":"playwright test --config e2e/playwright.config.ts --project=protocol"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:79f19dca-7d54-468f-a217-4139cba18eab"}},"repository":{"url":"git+https://github.com/forgesworn/canary-kit.git","type":"git"},"_npmVersion":"11.11.0","description":"Deepfake-proof identity verification. Open protocol, minimal dependencies.","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","dependencies":{"nsec-tree":"^1.4.0","@scure/bip32":"^2.0.1","@scure/bip39":"^2.0.1","spoken-token":"^2.0.2","@forgesworn/shamir-words":"^1.0.2"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.19.0","vite":"^8.0.0","serve":"^14.2.6","eslint":"^10.0.3","vitest":"^4.1.0","@types/ws":"^8.18.1","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^24.12.0","geohash-kit":"^1.5.1","maplibre-gl":"^5.20.2","nostr-tools":"^2.23.3","@noble/curves":"^2.0.1","@noble/hashes":"^2.0.1","@playwright/test":"^1.58.2","qrcode-generator":"^2.0.4","semantic-release":"^25.0.0","typescript-eslint":"^8.57.1","@vitest/coverage-v8":"^4.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","vite-plugin-singlefile":"^2.3.2","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/canary-kit_2.5.1_1773881220771_0.5862246963462574","host":"s3://npm-registry-packages-npm-production"}},"2.5.2":{"name":"canary-kit","version":"2.5.2","keywords":["canary","canary-kit","verification","identity","duress","safe-word","nostr","hmac","totp","deepfake","voice-clone","meshtastic","liveness","dead-mans-switch","coercion-resistance","spoken-word","bidirectional-verification","offline-first","minimal-dependencies","voice-phishing","vishing","anti-fraud","phone-verification","family-safety"],"author":{"name":"forgesworn"},"license":"MIT","_id":"canary-kit@2.5.2","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://canary.trotters.cc/","bugs":{"url":"https://github.com/forgesworn/canary-kit/issues"},"dist":{"shasum":"5d69ba069b58895863df4c4e36713a30183cadc2","tarball":"https://registry.npmjs.org/canary-kit/-/canary-kit-2.5.2.tgz","fileCount":69,"integrity":"sha512-EuxqEkGko3M8DHwlU/flEfxH/GUCAwQTlYNMSGz5vXWQTFfUquGtKVmdUsc3KGxa0Sl6IaN1EhpqppU/sPSn5w==","signatures":[{"sig":"MEUCIELkTvu8VLcN4JDoTvyDc1/EQlCGkaz9MArfDg6h/zX2AiEAtYMhDbq5f/w+yCgCwbHoy6vbgzoZw0/ORMIx4ooGNnY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/canary-kit@2.5.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":413547},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./sync":{"types":"./dist/sync.d.ts","import":"./dist/sync.js"},"./nostr":{"types":"./dist/nostr.d.ts","import":"./dist/nostr.js"},"./token":{"types":"./dist/token.d.ts","import":"./dist/token.js"},"./beacon":{"types":"./dist/beacon.d.ts","import":"./dist/beacon.js"},"./session":{"types":"./dist/session.d.ts","import":"./dist/session.js"},"./encoding":{"types":"./dist/encoding.d.ts","import":"./dist/encoding.js"},"./wordlist":{"types":"./dist/wordlist.d.ts","import":"./dist/wordlist.js"}},"gitHead":"b7d4729c7833f08224e52e83031e078e8ff0af7c","scripts":{"dev":"vite --config vite.config.ts","demo":"npm run build:app && serve docs -l 8787","lint":"eslint src/","test":"vitest run","bench":"vitest bench","build":"tsc","record":"node docs/record/record.js","lint:fix":"eslint src/ --fix","test:e2e":"playwright test --config e2e/playwright.config.ts","build:app":"vite build --config vite.config.ts","typecheck":"tsc --noEmit","test:watch":"vitest","test:e2e:ui":"playwright test --config e2e/playwright.config.ts --ui","build:single":"vite build --config vite.singlefile.config.ts && cp dist-single/index.html canary.html && echo '✓ canary.html ready'","record:short":"node docs/record/record.js short","record:silent":"node docs/record/record.js --no-voice","record:extended":"node docs/record/record.js extended","test:e2e:online":"playwright test --config e2e/playwright.config.ts --project=online","test:e2e:offline":"playwright test --config e2e/playwright.config.ts --project=offline","test:e2e:protocol":"playwright test --config e2e/playwright.config.ts --project=protocol"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:79f19dca-7d54-468f-a217-4139cba18eab"}},"repository":{"url":"git+https://github.com/forgesworn/canary-kit.git","type":"git"},"_npmVersion":"11.11.0","description":"Deepfake-proof identity verification. Open protocol, minimal dependencies.","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","dependencies":{"nsec-tree":"^1.4.0","@scure/bip32":"^2.0.1","@scure/bip39":"^2.0.1","spoken-token":"^2.0.2","@forgesworn/shamir-words":"^1.0.2"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.19.0","vite":"^8.0.0","serve":"^14.2.6","eslint":"^10.0.3","vitest":"^4.1.0","@types/ws":"^8.18.1","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^24.12.0","geohash-kit":"^1.5.1","maplibre-gl":"^5.20.2","nostr-tools":"^2.23.3","@noble/curves":"^2.0.1","@noble/hashes":"^2.0.1","@playwright/test":"^1.58.2","qrcode-generator":"^2.0.4","semantic-release":"^25.0.0","typescript-eslint":"^8.57.1","@vitest/coverage-v8":"^4.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","vite-plugin-singlefile":"^2.3.2","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/canary-kit_2.5.2_1773881943643_0.9910501971931818","host":"s3://npm-registry-packages-npm-production"}},"2.5.3":{"name":"canary-kit","version":"2.5.3","keywords":["canary","canary-kit","verification","identity","duress","safe-word","nostr","hmac","totp","deepfake","voice-clone","meshtastic","liveness","dead-mans-switch","coercion-resistance","spoken-word","bidirectional-verification","offline-first","minimal-dependencies","voice-phishing","vishing","anti-fraud","phone-verification","family-safety"],"author":{"name":"forgesworn"},"license":"MIT","_id":"canary-kit@2.5.3","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://canary.trotters.cc/","bugs":{"url":"https://github.com/forgesworn/canary-kit/issues"},"dist":{"shasum":"a576b083a05ee01c7d98007ba8e59b1396ba7b1f","tarball":"https://registry.npmjs.org/canary-kit/-/canary-kit-2.5.3.tgz","fileCount":69,"integrity":"sha512-huZwpSkcaxs+14hL0u6eYwL57Buxjnl+28ps+OUWTsWnTT6xSz7yWrifcaiUb9G2uLDvjVEEs/CI3kC16floqg==","signatures":[{"sig":"MEYCIQD4zuoG5sRpJPy6yCB9cF/4bJ7wBdXl7DF7NXEUoLiKNwIhAOw0GCFSC0jX+VJy6wJJ2xX1PE0uGkP/leKsjR+ZeBUV","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/canary-kit@2.5.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":413547},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./sync":{"types":"./dist/sync.d.ts","import":"./dist/sync.js"},"./nostr":{"types":"./dist/nostr.d.ts","import":"./dist/nostr.js"},"./token":{"types":"./dist/token.d.ts","import":"./dist/token.js"},"./beacon":{"types":"./dist/beacon.d.ts","import":"./dist/beacon.js"},"./session":{"types":"./dist/session.d.ts","import":"./dist/session.js"},"./encoding":{"types":"./dist/encoding.d.ts","import":"./dist/encoding.js"},"./wordlist":{"types":"./dist/wordlist.d.ts","import":"./dist/wordlist.js"}},"gitHead":"8eae7323245bb08553504003196be0c58068da4a","scripts":{"dev":"vite --config vite.config.ts","demo":"npm run build:app && serve docs -l 8787","lint":"eslint src/","test":"vitest run","bench":"vitest bench","build":"tsc","record":"node docs/record/record.js","lint:fix":"eslint src/ --fix","test:e2e":"playwright test --config e2e/playwright.config.ts","build:app":"vite build --config vite.config.ts","typecheck":"tsc --noEmit","test:watch":"vitest","test:e2e:ui":"playwright test --config e2e/playwright.config.ts --ui","build:single":"vite build --config vite.singlefile.config.ts && cp dist-single/index.html canary.html && echo '✓ canary.html ready'","record:short":"node docs/record/record.js short","record:silent":"node docs/record/record.js --no-voice","record:extended":"node docs/record/record.js extended","test:e2e:online":"playwright test --config e2e/playwright.config.ts --project=online","test:e2e:offline":"playwright test --config e2e/playwright.config.ts --project=offline","test:e2e:protocol":"playwright test --config e2e/playwright.config.ts --project=protocol"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:79f19dca-7d54-468f-a217-4139cba18eab"}},"repository":{"url":"git+https://github.com/forgesworn/canary-kit.git","type":"git"},"_npmVersion":"11.11.0","description":"Deepfake-proof identity verification. Open protocol, minimal dependencies.","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","dependencies":{"nsec-tree":"^1.4.0","@scure/bip32":"^2.0.1","@scure/bip39":"^2.0.1","spoken-token":"^2.0.2","@forgesworn/shamir-words":"^1.0.2"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.19.0","vite":"^8.0.0","serve":"^14.2.6","eslint":"^10.0.3","vitest":"^4.1.0","@types/ws":"^8.18.1","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^24.12.0","geohash-kit":"^1.5.1","maplibre-gl":"^5.20.2","nostr-tools":"^2.23.3","@noble/curves":"^2.0.1","@noble/hashes":"^2.0.1","@playwright/test":"^1.58.2","qrcode-generator":"^2.0.4","semantic-release":"^25.0.0","typescript-eslint":"^8.57.1","@vitest/coverage-v8":"^4.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","vite-plugin-singlefile":"^2.3.2","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/canary-kit_2.5.3_1773905085233_0.7003314480941971","host":"s3://npm-registry-packages-npm-production"}},"2.5.4":{"name":"canary-kit","version":"2.5.4","keywords":["canary","canary-kit","verification","identity","duress","safe-word","nostr","hmac","totp","deepfake","voice-clone","meshtastic","liveness","dead-mans-switch","coercion-resistance","spoken-word","bidirectional-verification","offline-first","minimal-dependencies","voice-phishing","vishing","anti-fraud","phone-verification","family-safety"],"author":{"name":"forgesworn"},"license":"MIT","_id":"canary-kit@2.5.4","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://canary.trotters.cc/","bugs":{"url":"https://github.com/forgesworn/canary-kit/issues"},"dist":{"shasum":"9087fc7ffe8300a24e1e7a28b1bcbb5a23485cd3","tarball":"https://registry.npmjs.org/canary-kit/-/canary-kit-2.5.4.tgz","fileCount":69,"integrity":"sha512-czzuTskTnTRy2n3tRLXUTO1JNB+ayRr7ppwNVsRL2ir+y+9W+L4uBs2tL/UPKMCvjcCgnH11o9Y+uTMsKFsaTg==","signatures":[{"sig":"MEUCIQDAKWzF9CV0cM/IGFYJNyPQ8C751rVQRw+rpK9BCrlcAwIgEKlpnLrpqFdT9jl6sE6/veHrzLseHNeERe3AxmIso5M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/canary-kit@2.5.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":413547},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./sync":{"types":"./dist/sync.d.ts","import":"./dist/sync.js"},"./nostr":{"types":"./dist/nostr.d.ts","import":"./dist/nostr.js"},"./token":{"types":"./dist/token.d.ts","import":"./dist/token.js"},"./beacon":{"types":"./dist/beacon.d.ts","import":"./dist/beacon.js"},"./session":{"types":"./dist/session.d.ts","import":"./dist/session.js"},"./encoding":{"types":"./dist/encoding.d.ts","import":"./dist/encoding.js"},"./wordlist":{"types":"./dist/wordlist.d.ts","import":"./dist/wordlist.js"}},"gitHead":"779a8af48c15e436abf5156d7f81b4d743899c46","scripts":{"dev":"vite --config vite.config.ts","demo":"npm run build:app && serve docs -l 8787","lint":"eslint src/","test":"vitest run","bench":"vitest bench","build":"tsc","record":"node docs/record/record.js","lint:fix":"eslint src/ --fix","test:e2e":"playwright test --config e2e/playwright.config.ts","build:app":"vite build --config vite.config.ts","typecheck":"tsc --noEmit","test:watch":"vitest","test:e2e:ui":"playwright test --config e2e/playwright.config.ts --ui","build:single":"vite build --config vite.singlefile.config.ts && cp dist-single/index.html canary.html && echo '✓ canary.html ready'","record:short":"node docs/record/record.js short","record:silent":"node docs/record/record.js --no-voice","record:extended":"node docs/record/record.js extended","test:e2e:online":"playwright test --config e2e/playwright.config.ts --project=online","test:e2e:offline":"playwright test --config e2e/playwright.config.ts --project=offline","test:e2e:protocol":"playwright test --config e2e/playwright.config.ts --project=protocol"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:79f19dca-7d54-468f-a217-4139cba18eab"}},"repository":{"url":"git+https://github.com/forgesworn/canary-kit.git","type":"git"},"_npmVersion":"11.11.0","description":"Deepfake-proof identity verification. Open protocol, minimal dependencies.","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","dependencies":{"nsec-tree":"^1.4.0","@scure/bip32":"^2.0.1","@scure/bip39":"^2.0.1","spoken-token":"^2.0.2","@forgesworn/shamir-words":"^1.0.2"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.19.0","vite":"^8.0.0","serve":"^14.2.6","eslint":"^10.0.3","vitest":"^4.1.0","@types/ws":"^8.18.1","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^24.12.0","geohash-kit":"^1.5.1","maplibre-gl":"^5.20.2","nostr-tools":"^2.23.3","@noble/curves":"^2.0.1","@noble/hashes":"^2.0.1","@playwright/test":"^1.58.2","qrcode-generator":"^2.0.4","semantic-release":"^25.0.0","typescript-eslint":"^8.57.1","@vitest/coverage-v8":"^4.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","vite-plugin-singlefile":"^2.3.2","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/canary-kit_2.5.4_1773905611153_0.9717767407136564","host":"s3://npm-registry-packages-npm-production"}},"2.5.5":{"name":"canary-kit","version":"2.5.5","keywords":["canary","canary-kit","verification","identity","duress","safe-word","nostr","hmac","totp","deepfake","voice-clone","meshtastic","liveness","dead-mans-switch","coercion-resistance","spoken-word","bidirectional-verification","offline-first","minimal-dependencies","voice-phishing","vishing","anti-fraud","phone-verification","family-safety"],"author":{"name":"forgesworn"},"license":"MIT","_id":"canary-kit@2.5.5","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://canary.trotters.cc/","bugs":{"url":"https://github.com/forgesworn/canary-kit/issues"},"dist":{"shasum":"3f16ac42b9885683c7594a2e50184e209aea6b88","tarball":"https://registry.npmjs.org/canary-kit/-/canary-kit-2.5.5.tgz","fileCount":69,"integrity":"sha512-Wpj1q84bLbCnrOaZfU4f3gRdJeq3iwW0IKXmTAnNGg1zLZmcrM8b1XumSg1iAW6wIb0MPXr+zyz+gsShiq8UfQ==","signatures":[{"sig":"MEQCICVCuuSb4d6rk4VYX6VoTZiIZwp7UGlbJmEG63aF3PVDAiATzFvsrqAkDaBladv5zcgPnMDQrzUhOYrxgxshBuhNDg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/canary-kit@2.5.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":413547},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./sync":{"types":"./dist/sync.d.ts","import":"./dist/sync.js"},"./nostr":{"types":"./dist/nostr.d.ts","import":"./dist/nostr.js"},"./token":{"types":"./dist/token.d.ts","import":"./dist/token.js"},"./beacon":{"types":"./dist/beacon.d.ts","import":"./dist/beacon.js"},"./session":{"types":"./dist/session.d.ts","import":"./dist/session.js"},"./encoding":{"types":"./dist/encoding.d.ts","import":"./dist/encoding.js"},"./wordlist":{"types":"./dist/wordlist.d.ts","import":"./dist/wordlist.js"}},"gitHead":"5fcf683b92096881b8cda5104cf313035699bcd5","scripts":{"dev":"vite --config vite.config.ts","demo":"npm run build:app && serve docs -l 8787","lint":"eslint src/","test":"vitest run","bench":"vitest bench","build":"tsc","record":"node docs/record/record.js","lint:fix":"eslint src/ --fix","test:e2e":"playwright test --config e2e/playwright.config.ts","build:app":"vite build --config vite.config.ts","typecheck":"tsc --noEmit","test:watch":"vitest","test:e2e:ui":"playwright test --config e2e/playwright.config.ts --ui","build:single":"vite build --config vite.singlefile.config.ts && cp dist-single/index.html canary.html && echo '✓ canary.html ready'","record:short":"node docs/record/record.js short","record:silent":"node docs/record/record.js --no-voice","record:extended":"node docs/record/record.js extended","test:e2e:online":"playwright test --config e2e/playwright.config.ts --project=online","test:e2e:offline":"playwright test --config e2e/playwright.config.ts --project=offline","test:e2e:protocol":"playwright test --config e2e/playwright.config.ts --project=protocol"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:79f19dca-7d54-468f-a217-4139cba18eab"}},"repository":{"url":"git+https://github.com/forgesworn/canary-kit.git","type":"git"},"_npmVersion":"11.12.0","description":"Deepfake-proof identity verification. Open protocol, minimal dependencies.","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","dependencies":{"nsec-tree":"^1.4.0","@scure/bip32":"^2.0.1","@scure/bip39":"^2.0.1","spoken-token":"^2.0.2","@forgesworn/shamir-words":"^1.0.2"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.19.0","vite":"^8.0.0","serve":"^14.2.6","eslint":"^10.0.3","vitest":"^4.1.0","@types/ws":"^8.18.1","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^24.12.0","geohash-kit":"^1.5.1","maplibre-gl":"^5.20.2","nostr-tools":"^2.23.3","@noble/curves":"^2.0.1","@noble/hashes":"^2.0.1","@playwright/test":"^1.58.2","qrcode-generator":"^2.0.4","semantic-release":"^25.0.0","typescript-eslint":"^8.57.1","@vitest/coverage-v8":"^4.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","vite-plugin-singlefile":"^2.3.2","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/canary-kit_2.5.5_1773914583894_0.8950899484263604","host":"s3://npm-registry-packages-npm-production"}},"2.6.0":{"name":"canary-kit","version":"2.6.0","keywords":["canary","canary-kit","verification","identity","duress","safe-word","nostr","hmac","totp","deepfake","voice-clone","meshtastic","liveness","dead-mans-switch","coercion-resistance","spoken-word","bidirectional-verification","offline-first","minimal-dependencies","voice-phishing","vishing","anti-fraud","phone-verification","family-safety"],"author":{"name":"forgesworn"},"license":"MIT","_id":"canary-kit@2.6.0","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://canary.trotters.cc/","bugs":{"url":"https://github.com/forgesworn/canary-kit/issues"},"dist":{"shasum":"10ea3a275dbe35d148b70c9a390cec01bd65685d","tarball":"https://registry.npmjs.org/canary-kit/-/canary-kit-2.6.0.tgz","fileCount":69,"integrity":"sha512-2LaOTXO6UjIfDsS41jGUArvbxOQhW4HQmhO/wOedP/No/nqNmGGfDD5bRbLZFBnF7JPvTxE40Razx0nhjMPi6A==","signatures":[{"sig":"MEQCIFuvUwPBeqnpn8Oia3IxhvJ/kHwUWLiDil305mO8mKX0AiAxqv/aRnhebsp6tZHKRcQi9/29DZAUyFaQfZ4mhCoxcg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/canary-kit@2.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":413547},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./sync":{"types":"./dist/sync.d.ts","import":"./dist/sync.js"},"./nostr":{"types":"./dist/nostr.d.ts","import":"./dist/nostr.js"},"./token":{"types":"./dist/token.d.ts","import":"./dist/token.js"},"./beacon":{"types":"./dist/beacon.d.ts","import":"./dist/beacon.js"},"./session":{"types":"./dist/session.d.ts","import":"./dist/session.js"},"./encoding":{"types":"./dist/encoding.d.ts","import":"./dist/encoding.js"},"./wordlist":{"types":"./dist/wordlist.d.ts","import":"./dist/wordlist.js"}},"gitHead":"ba5856e3126e2c9c79c5a684365c26d7d8a19678","scripts":{"dev":"vite --config vite.config.ts","demo":"npm run build:app && serve docs -l 8787","lint":"eslint src/","test":"vitest run","bench":"vitest bench","build":"tsc","record":"node docs/record/record.js","lint:fix":"eslint src/ --fix","test:e2e":"playwright test --config e2e/playwright.config.ts","build:app":"vite build --config vite.config.ts","typecheck":"tsc --noEmit","test:watch":"vitest","test:e2e:ui":"playwright test --config e2e/playwright.config.ts --ui","build:single":"vite build --config vite.singlefile.config.ts && cp dist-single/index.html canary.html && echo '✓ canary.html ready'","record:short":"node docs/record/record.js short","record:silent":"node docs/record/record.js --no-voice","record:extended":"node docs/record/record.js extended","test:e2e:online":"playwright test --config e2e/playwright.config.ts --project=online","test:e2e:offline":"playwright test --config e2e/playwright.config.ts --project=offline","test:e2e:protocol":"playwright test --config e2e/playwright.config.ts --project=protocol"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:79f19dca-7d54-468f-a217-4139cba18eab"}},"repository":{"url":"git+https://github.com/forgesworn/canary-kit.git","type":"git"},"_npmVersion":"11.12.0","description":"Deepfake-proof identity verification. Open protocol, minimal dependencies.","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","dependencies":{"nsec-tree":"^1.4.0","@scure/bip32":"^2.0.1","@scure/bip39":"^2.0.1","spoken-token":"^2.0.2","@forgesworn/shamir-words":"^1.0.2"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.19.0","vite":"^8.0.0","serve":"^14.2.6","eslint":"^10.0.3","vitest":"^4.1.0","@types/ws":"^8.18.1","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^24.12.0","geohash-kit":"^1.5.1","maplibre-gl":"^5.20.2","nostr-tools":"^2.23.3","@noble/curves":"^2.0.1","@noble/hashes":"^2.0.1","@playwright/test":"^1.58.2","qrcode-generator":"^2.0.4","semantic-release":"^25.0.0","typescript-eslint":"^8.57.1","@vitest/coverage-v8":"^4.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","vite-plugin-singlefile":"^2.3.2","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/canary-kit_2.6.0_1773939493629_0.9108968077361423","host":"s3://npm-registry-packages-npm-production"}},"2.6.1":{"name":"canary-kit","version":"2.6.1","keywords":["canary","canary-kit","verification","identity","duress","safe-word","nostr","hmac","totp","deepfake","voice-clone","meshtastic","liveness","dead-mans-switch","coercion-resistance","spoken-word","bidirectional-verification","offline-first","minimal-dependencies","voice-phishing","vishing","anti-fraud","phone-verification","family-safety"],"author":{"name":"forgesworn"},"license":"MIT","_id":"canary-kit@2.6.1","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://canary.trotters.cc/","bugs":{"url":"https://github.com/forgesworn/canary-kit/issues"},"dist":{"shasum":"969589060dfafe19116752212cfe6b72e0cd1af7","tarball":"https://registry.npmjs.org/canary-kit/-/canary-kit-2.6.1.tgz","fileCount":69,"integrity":"sha512-I7Z51HRwcsO97vpji5LLAlBOOe4MNGUfBQuYD6N6Im1XWa/4eB4yNb81OJXzKr/DgmMUJb+HXI9CHKoTUffn/g==","signatures":[{"sig":"MEUCIQCh7HArJjd1E4CCGTPHGqmR7jd2ud/2iv3gyEXDFJIA7wIgSeKmHf2/PB1emqrOib5n1B0jCjOXrxCTgAld2wK5PvY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/canary-kit@2.6.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":413547},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./sync":{"types":"./dist/sync.d.ts","import":"./dist/sync.js"},"./nostr":{"types":"./dist/nostr.d.ts","import":"./dist/nostr.js"},"./token":{"types":"./dist/token.d.ts","import":"./dist/token.js"},"./beacon":{"types":"./dist/beacon.d.ts","import":"./dist/beacon.js"},"./session":{"types":"./dist/session.d.ts","import":"./dist/session.js"},"./encoding":{"types":"./dist/encoding.d.ts","import":"./dist/encoding.js"},"./wordlist":{"types":"./dist/wordlist.d.ts","import":"./dist/wordlist.js"}},"gitHead":"6607870ce2df553cda6da489bf4883325ea303f6","scripts":{"dev":"vite --config vite.config.ts","demo":"npm run build:app && serve docs -l 8787","lint":"eslint src/","test":"vitest run","bench":"vitest bench","build":"tsc","record":"node docs/record/record.js","lint:fix":"eslint src/ --fix","test:e2e":"playwright test --config e2e/playwright.config.ts","build:app":"vite build --config vite.config.ts","typecheck":"tsc --noEmit","test:watch":"vitest","test:e2e:ui":"playwright test --config e2e/playwright.config.ts --ui","build:single":"vite build --config vite.singlefile.config.ts && cp dist-single/index.html canary.html && echo '✓ canary.html ready'","record:short":"node docs/record/record.js short","record:silent":"node docs/record/record.js --no-voice","record:extended":"node docs/record/record.js extended","test:e2e:online":"playwright test --config e2e/playwright.config.ts --project=online","test:e2e:offline":"playwright test --config e2e/playwright.config.ts --project=offline","test:e2e:protocol":"playwright test --config e2e/playwright.config.ts --project=protocol"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:79f19dca-7d54-468f-a217-4139cba18eab"}},"repository":{"url":"git+https://github.com/forgesworn/canary-kit.git","type":"git"},"_npmVersion":"11.12.0","description":"Deepfake-proof identity verification. Open protocol, minimal dependencies.","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","dependencies":{"nsec-tree":"^1.4.0","@scure/bip32":"^2.0.1","@scure/bip39":"^2.0.1","spoken-token":"^2.0.2","@forgesworn/shamir-words":"^1.0.2"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.19.0","vite":"^8.0.0","serve":"^14.2.6","eslint":"^10.0.3","vitest":"^4.1.0","@types/ws":"^8.18.1","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^24.12.0","geohash-kit":"^1.5.1","maplibre-gl":"^5.20.2","nostr-tools":"^2.23.3","@noble/curves":"^2.0.1","@noble/hashes":"^2.0.1","@playwright/test":"^1.58.2","qrcode-generator":"^2.0.4","semantic-release":"^25.0.0","typescript-eslint":"^8.57.1","@vitest/coverage-v8":"^4.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","vite-plugin-singlefile":"^2.3.2","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/canary-kit_2.6.1_1773940068437_0.8829964292174941","host":"s3://npm-registry-packages-npm-production"}},"2.6.2":{"name":"canary-kit","version":"2.6.2","keywords":["canary","canary-kit","verification","identity","duress","safe-word","nostr","hmac","totp","deepfake","voice-clone","meshtastic","liveness","dead-mans-switch","coercion-resistance","spoken-word","bidirectional-verification","offline-first","minimal-dependencies","voice-phishing","vishing","anti-fraud","phone-verification","family-safety"],"author":{"name":"forgesworn"},"license":"MIT","_id":"canary-kit@2.6.2","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://canary.trotters.cc/","bugs":{"url":"https://github.com/forgesworn/canary-kit/issues"},"dist":{"shasum":"7f6fb9e58c3de1b5600359a4a04eac3e9bbcd924","tarball":"https://registry.npmjs.org/canary-kit/-/canary-kit-2.6.2.tgz","fileCount":69,"integrity":"sha512-1/qU+6g1rVx+NjxoaEwvtSthTecwj7+bwZRcv5fNeypbHStSIIU90mQdtxSYp4YvzE+9zgnKFYwFf33PLHlAyw==","signatures":[{"sig":"MEUCIQDwTaQrgsr/SPkA+b/FPTUVNinBpLusP3oGiPJrSePqvgIgDuXNNOKDpopPasu0yP8/JlgacwSxCVT9Im+NWu1kC50=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/canary-kit@2.6.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":413552},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./sync":{"types":"./dist/sync.d.ts","import":"./dist/sync.js"},"./nostr":{"types":"./dist/nostr.d.ts","import":"./dist/nostr.js"},"./token":{"types":"./dist/token.d.ts","import":"./dist/token.js"},"./beacon":{"types":"./dist/beacon.d.ts","import":"./dist/beacon.js"},"./session":{"types":"./dist/session.d.ts","import":"./dist/session.js"},"./encoding":{"types":"./dist/encoding.d.ts","import":"./dist/encoding.js"},"./wordlist":{"types":"./dist/wordlist.d.ts","import":"./dist/wordlist.js"}},"gitHead":"5fca2cdfb94f04b042455fe22f7bc63f531eea17","scripts":{"dev":"vite --config vite.config.ts","demo":"npm run build:app && serve docs -l 8787","lint":"eslint src/","test":"vitest run","bench":"vitest bench","build":"tsc","record":"node docs/record/record.js","lint:fix":"eslint src/ --fix","test:e2e":"playwright test --config e2e/playwright.config.ts","build:app":"vite build --config vite.config.ts","typecheck":"tsc --noEmit","test:watch":"vitest","test:e2e:ui":"playwright test --config e2e/playwright.config.ts --ui","build:single":"vite build --config vite.singlefile.config.ts && cp dist-single/index.html canary.html && echo '✓ canary.html ready'","record:short":"node docs/record/record.js short","record:silent":"node docs/record/record.js --no-voice","record:extended":"node docs/record/record.js extended","test:e2e:online":"playwright test --config e2e/playwright.config.ts --project=online","test:e2e:offline":"playwright test --config e2e/playwright.config.ts --project=offline","test:e2e:protocol":"playwright test --config e2e/playwright.config.ts --project=protocol"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:79f19dca-7d54-468f-a217-4139cba18eab"}},"repository":{"url":"git+https://github.com/forgesworn/canary-kit.git","type":"git"},"_npmVersion":"11.12.0","description":"Deepfake-proof identity verification. Open protocol, minimal dependencies.","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","dependencies":{"nsec-tree":"^1.4.0","@scure/bip32":"^2.0.1","@scure/bip39":"^2.0.1","spoken-token":"^2.0.2","@forgesworn/shamir-words":"^1.0.2"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.19.0","vite":"^8.0.0","serve":"^14.2.6","eslint":"^10.0.3","vitest":"^4.1.0","@types/ws":"^8.18.1","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^24.12.0","geohash-kit":"^1.5.1","maplibre-gl":"^5.20.2","nostr-tools":"^2.23.3","@noble/curves":"^2.0.1","@noble/hashes":"^2.0.1","@playwright/test":"^1.58.2","qrcode-generator":"^2.0.4","semantic-release":"^25.0.0","typescript-eslint":"^8.57.1","@vitest/coverage-v8":"^4.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","vite-plugin-singlefile":"^2.3.2","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/canary-kit_2.6.2_1773999088930_0.3177978699322075","host":"s3://npm-registry-packages-npm-production"}},"2.7.0":{"name":"canary-kit","version":"2.7.0","keywords":["canary","canary-kit","verification","identity","duress","safe-word","nostr","hmac","totp","deepfake","voice-clone","meshtastic","liveness","dead-mans-switch","coercion-resistance","spoken-word","bidirectional-verification","offline-first","minimal-dependencies","voice-phishing","vishing","anti-fraud","phone-verification","family-safety"],"author":{"name":"forgesworn"},"license":"MIT","_id":"canary-kit@2.7.0","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://canary.trotters.cc/","bugs":{"url":"https://github.com/forgesworn/canary-kit/issues"},"dist":{"shasum":"f90ca9cf7c0827debfad3286e631d4223ee5e98d","tarball":"https://registry.npmjs.org/canary-kit/-/canary-kit-2.7.0.tgz","fileCount":69,"integrity":"sha512-zvUaO1x6yLBLugHCChvH69z/N3AcHf78o6Rmsm8+m8HnkJpq82St0wthge62EjWo47wh4QVyrBWEuFxJGB8y4Q==","signatures":[{"sig":"MEUCIC9D60/66C/jo0Z7PXfD8EKbriKwvFOjEMmTY4COCVEHAiEAonL8Dmsopok67p8qYq+pdZbAWE5B4HJnpvASC8ixTO4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/canary-kit@2.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":415672},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./sync":{"types":"./dist/sync.d.ts","import":"./dist/sync.js"},"./nostr":{"types":"./dist/nostr.d.ts","import":"./dist/nostr.js"},"./token":{"types":"./dist/token.d.ts","import":"./dist/token.js"},"./beacon":{"types":"./dist/beacon.d.ts","import":"./dist/beacon.js"},"./session":{"types":"./dist/session.d.ts","import":"./dist/session.js"},"./encoding":{"types":"./dist/encoding.d.ts","import":"./dist/encoding.js"},"./wordlist":{"types":"./dist/wordlist.d.ts","import":"./dist/wordlist.js"}},"funding":{"url":"lightning:thedonkey@strike.me","type":"lightning"},"gitHead":"d2fb7b9bf0615de0cf5781afee90e3fea8f04236","scripts":{"dev":"vite --config vite.config.ts","demo":"npm run build:app && serve docs -l 8787","lint":"eslint src/","test":"vitest run","bench":"vitest bench","build":"tsc","record":"node docs/record/record.js","lint:fix":"eslint src/ --fix","test:e2e":"playwright test --config e2e/playwright.config.ts","build:app":"vite build --config vite.config.ts","typecheck":"tsc --noEmit","test:watch":"vitest","test:e2e:ui":"playwright test --config e2e/playwright.config.ts --ui","build:single":"vite build --config vite.singlefile.config.ts && cp dist-single/index.html canary.html && echo '✓ canary.html ready'","record:short":"node docs/record/record.js short","record:silent":"node docs/record/record.js --no-voice","record:extended":"node docs/record/record.js extended","test:e2e:online":"playwright test --config e2e/playwright.config.ts --project=online","test:e2e:offline":"playwright test --config e2e/playwright.config.ts --project=offline","test:e2e:protocol":"playwright test --config e2e/playwright.config.ts --project=protocol"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:79f19dca-7d54-468f-a217-4139cba18eab"}},"repository":{"url":"git+https://github.com/forgesworn/canary-kit.git","type":"git"},"_npmVersion":"11.12.0","description":"Deepfake-proof identity verification. Open protocol, minimal dependencies.","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","dependencies":{"nsec-tree":"^1.4.0","@scure/bip32":"^2.0.1","@scure/bip39":"^2.0.1","spoken-token":"^2.0.2","@forgesworn/shamir-words":"^1.0.2"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.19.0","vite":"^8.0.0","serve":"^14.2.6","eslint":"^10.0.3","vitest":"^4.1.0","@types/ws":"^8.18.1","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^24.12.0","geohash-kit":"^1.5.1","maplibre-gl":"^5.20.2","nostr-tools":"^2.23.3","@noble/curves":"^2.0.1","@noble/hashes":"^2.0.1","@playwright/test":"^1.58.2","qrcode-generator":"^2.0.4","semantic-release":"^25.0.0","typescript-eslint":"^8.57.1","@vitest/coverage-v8":"^4.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","vite-plugin-singlefile":"^2.3.2","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/canary-kit_2.7.0_1774630563322_0.8247255218660317","host":"s3://npm-registry-packages-npm-production"}},"2.7.1":{"name":"canary-kit","version":"2.7.1","keywords":["canary","canary-kit","verification","identity","duress","safe-word","nostr","hmac","totp","deepfake","voice-clone","meshtastic","liveness","dead-mans-switch","coercion-resistance","spoken-word","bidirectional-verification","offline-first","minimal-dependencies","voice-phishing","vishing","anti-fraud","phone-verification","family-safety"],"author":{"name":"forgesworn"},"license":"MIT","_id":"canary-kit@2.7.1","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://canary.trotters.cc/","bugs":{"url":"https://github.com/forgesworn/canary-kit/issues"},"dist":{"shasum":"d12688e3caace8ac4c58600f1d748afde598828f","tarball":"https://registry.npmjs.org/canary-kit/-/canary-kit-2.7.1.tgz","fileCount":71,"integrity":"sha512-5NDbHCyldg6MAoVXARXc/Uv2ywwKUCLw7iXHS6+fFrsW9VlYKSRF7WgKe2717upzil/AIRo1f2RIEiW7hNfnlw==","signatures":[{"sig":"MEUCIGeZnorjAHkfJOdyBqLQt6ccgGCUJyZS4eTXxzCKPSqjAiEA1Qyk7uQnDrk5tFZl4i0v9w//GVyHUwVkOxeVSTu2sSc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/canary-kit@2.7.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":478560},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./sync":{"types":"./dist/sync.d.ts","import":"./dist/sync.js"},"./nostr":{"types":"./dist/nostr.d.ts","import":"./dist/nostr.js"},"./token":{"types":"./dist/token.d.ts","import":"./dist/token.js"},"./beacon":{"types":"./dist/beacon.d.ts","import":"./dist/beacon.js"},"./session":{"types":"./dist/session.d.ts","import":"./dist/session.js"},"./encoding":{"types":"./dist/encoding.d.ts","import":"./dist/encoding.js"},"./wordlist":{"types":"./dist/wordlist.d.ts","import":"./dist/wordlist.js"}},"funding":{"url":"lightning:thedonkey@strike.me","type":"lightning"},"gitHead":"9390de932d5d8d841bc15c36541f5be071471987","scripts":{"dev":"vite --config vite.config.ts","demo":"npm run build:app && serve docs -l 8787","lint":"eslint src/","test":"vitest run","bench":"vitest bench","build":"tsc","record":"node docs/record/record.js","lint:fix":"eslint src/ --fix","test:e2e":"playwright test --config e2e/playwright.config.ts","build:app":"vite build --config vite.config.ts","typecheck":"tsc --noEmit","test:watch":"vitest","test:e2e:ui":"playwright test --config e2e/playwright.config.ts --ui","build:single":"vite build --config vite.singlefile.config.ts && cp dist-single/index.html canary.html && echo '✓ canary.html ready'","record:short":"node docs/record/record.js short","record:silent":"node docs/record/record.js --no-voice","record:extended":"node docs/record/record.js extended","test:e2e:online":"playwright test --config e2e/playwright.config.ts --project=online","test:e2e:offline":"playwright test --config e2e/playwright.config.ts --project=offline","test:e2e:protocol":"playwright test --config e2e/playwright.config.ts --project=protocol"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:79f19dca-7d54-468f-a217-4139cba18eab"}},"repository":{"url":"git+https://github.com/forgesworn/canary-kit.git","type":"git"},"_npmVersion":"11.12.1","description":"Deepfake-proof identity verification. Open protocol, minimal dependencies.","directories":{},"sideEffects":false,"_nodeVersion":"24.14.1","dependencies":{"nsec-tree":"^1.4.0","@scure/bip32":"^2.0.1","@scure/bip39":"^2.0.1","spoken-token":"^2.0.2","@forgesworn/shamir-words":"^1.0.2"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.19.0","vite":"^8.0.0","serve":"^14.2.6","eslint":"^10.0.3","vitest":"^4.1.0","@types/ws":"^8.18.1","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^24.12.0","geohash-kit":"^1.5.1","maplibre-gl":"^5.20.2","nostr-tools":"^2.23.3","@noble/curves":"^2.0.1","@noble/hashes":"^2.0.1","@playwright/test":"^1.58.2","qrcode-generator":"^2.0.4","semantic-release":"^25.0.0","typescript-eslint":"^8.57.1","@vitest/coverage-v8":"^4.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","vite-plugin-singlefile":"^2.3.2","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/canary-kit_2.7.1_1775590061009_0.29331577090739125","host":"s3://npm-registry-packages-npm-production"}},"2.7.2":{"name":"canary-kit","version":"2.7.2","keywords":["canary","canary-kit","verification","identity","duress","safe-word","nostr","hmac","totp","deepfake","voice-clone","meshtastic","liveness","dead-mans-switch","coercion-resistance","spoken-word","bidirectional-verification","offline-first","minimal-dependencies","voice-phishing","vishing","anti-fraud","phone-verification","family-safety"],"author":{"name":"forgesworn"},"license":"MIT","_id":"canary-kit@2.7.2","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://canary.trotters.cc/","bugs":{"url":"https://github.com/forgesworn/canary-kit/issues"},"dist":{"shasum":"706681dfbb892bd1cb428629ad1e9f1cec2c641e","tarball":"https://registry.npmjs.org/canary-kit/-/canary-kit-2.7.2.tgz","fileCount":71,"integrity":"sha512-ewSgpHNuL7FHlqNdLoDxOEEY95Z6h60I9zSrzf0hD6177wJthCG8R2zJT9mNc/JS/3I48pzXc7pYLGK0xTtwng==","signatures":[{"sig":"MEUCIQC3Q6SwxOcJdmEzQeJmSVVEVxTXx3YWwM/ArXCRyTvqegIgGWwky4QJmD2cjRlHjPwDxLVU09eyMNTmkzc+iJVmzGw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/canary-kit@2.7.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":478560},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./sync":{"types":"./dist/sync.d.ts","import":"./dist/sync.js"},"./nostr":{"types":"./dist/nostr.d.ts","import":"./dist/nostr.js"},"./token":{"types":"./dist/token.d.ts","import":"./dist/token.js"},"./beacon":{"types":"./dist/beacon.d.ts","import":"./dist/beacon.js"},"./session":{"types":"./dist/session.d.ts","import":"./dist/session.js"},"./encoding":{"types":"./dist/encoding.d.ts","import":"./dist/encoding.js"},"./wordlist":{"types":"./dist/wordlist.d.ts","import":"./dist/wordlist.js"}},"funding":{"url":"lightning:thedonkey@strike.me","type":"lightning"},"gitHead":"cadec3ec93027861ab90473a54b64b48169edb46","scripts":{"dev":"vite --config vite.config.ts","demo":"npm run build:app && serve docs -l 8787","lint":"eslint src/","test":"vitest run","bench":"vitest bench","build":"tsc","record":"node docs/record/record.js","lint:fix":"eslint src/ --fix","test:e2e":"playwright test --config e2e/playwright.config.ts","build:app":"vite build --config vite.config.ts","typecheck":"tsc --noEmit","test:watch":"vitest","test:e2e:ui":"playwright test --config e2e/playwright.config.ts --ui","build:single":"vite build --config vite.singlefile.config.ts && cp dist-single/index.html canary.html && echo '✓ canary.html ready'","record:short":"node docs/record/record.js short","record:silent":"node docs/record/record.js --no-voice","record:extended":"node docs/record/record.js extended","test:e2e:online":"playwright test --config e2e/playwright.config.ts --project=online","test:e2e:offline":"playwright test --config e2e/playwright.config.ts --project=offline","test:e2e:protocol":"playwright test --config e2e/playwright.config.ts --project=protocol"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:79f19dca-7d54-468f-a217-4139cba18eab"}},"repository":{"url":"git+https://github.com/forgesworn/canary-kit.git","type":"git"},"_npmVersion":"11.12.1","description":"Deepfake-proof identity verification. Open protocol, minimal dependencies.","directories":{},"sideEffects":false,"_nodeVersion":"24.14.1","dependencies":{"nsec-tree":"^1.4.0","@scure/bip32":"^2.0.1","@scure/bip39":"^2.0.1","spoken-token":"^2.0.2","@forgesworn/shamir-words":"^1.0.2"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.19.0","vite":"^8.0.0","serve":"^14.2.6","eslint":"^10.0.3","vitest":"^4.1.0","@types/ws":"^8.18.1","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^24.12.0","geohash-kit":"^1.5.1","maplibre-gl":"^5.20.2","nostr-tools":"^2.23.3","@noble/curves":"^2.0.1","@noble/hashes":"^2.0.1","@playwright/test":"^1.58.2","qrcode-generator":"^2.0.4","semantic-release":"^25.0.0","typescript-eslint":"^8.57.1","@vitest/coverage-v8":"^4.1.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","vite-plugin-singlefile":"^2.3.2","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/canary-kit_2.7.2_1775993460035_0.03950117943491338","host":"s3://npm-registry-packages-npm-production"}},"2.7.4":{"name":"canary-kit","version":"2.7.4","keywords":["canary","canary-kit","verification","identity","duress","safe-word","nostr","hmac","totp","deepfake","voice-clone","meshtastic","liveness","dead-mans-switch","coercion-resistance","spoken-word","bidirectional-verification","offline-first","minimal-dependencies","voice-phishing","vishing","anti-fraud","phone-verification","family-safety"],"author":{"name":"forgesworn"},"license":"MIT","_id":"canary-kit@2.7.4","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://canary.trotters.cc/","bugs":{"url":"https://github.com/forgesworn/canary-kit/issues"},"dist":{"shasum":"a502b43f269a2cca9310cb09cfe5c721ee5bfd18","tarball":"https://registry.npmjs.org/canary-kit/-/canary-kit-2.7.4.tgz","fileCount":71,"integrity":"sha512-LQYW0OIlokqifZs9WQAfGwu4dY5ts+eQaaHemxU+l+pylre1YwP2E47gsKdNPl75P/zs6XCKfKjXl9At8DM/bg==","signatures":[{"sig":"MEQCIHptWuZQnGXR8/L20Xlw4kXlDKdNsufW3jS5rvvvEWpxAiBvMN009pJGV5s8sgNjQhiukjLcuvIcphHRGiWaycDEtA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/canary-kit@2.7.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":478566},"main":"./dist/index.js","type":"module","_from":"file:/home/runner/work/_temp/forgesworn-anvil/canary-kit-2.7.4.tgz","types":"./dist/index.d.ts","engines":{"node":">=24"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./sync":{"types":"./dist/sync.d.ts","import":"./dist/sync.js"},"./nostr":{"types":"./dist/nostr.d.ts","import":"./dist/nostr.js"},"./token":{"types":"./dist/token.d.ts","import":"./dist/token.js"},"./beacon":{"types":"./dist/beacon.d.ts","import":"./dist/beacon.js"},"./session":{"types":"./dist/session.d.ts","import":"./dist/session.js"},"./encoding":{"types":"./dist/encoding.d.ts","import":"./dist/encoding.js"},"./wordlist":{"types":"./dist/wordlist.d.ts","import":"./dist/wordlist.js"}},"funding":{"url":"lightning:thedonkey@strike.me","type":"lightning"},"scripts":{"dev":"vite --config vite.config.ts","demo":"npm run build:app && serve docs -l 8787","lint":"eslint src/","test":"vitest run","bench":"vitest bench","build":"tsc","record":"node docs/record/record.js","lint:fix":"eslint src/ --fix","test:e2e":"playwright test --config e2e/playwright.config.ts","build:app":"vite build --config vite.config.ts","typecheck":"tsc --noEmit","test:watch":"vitest","test:e2e:ui":"playwright test --config e2e/playwright.config.ts --ui","build:single":"vite build --config vite.singlefile.config.ts && cp dist-single/index.html canary.html && echo '✓ canary.html ready'","record:short":"node docs/record/record.js short","record:silent":"node docs/record/record.js --no-voice","record:extended":"node docs/record/record.js extended","test:e2e:online":"playwright test --config e2e/playwright.config.ts --project=online","test:e2e:offline":"playwright test --config e2e/playwright.config.ts --project=offline","test:e2e:protocol":"playwright test --config e2e/playwright.config.ts --project=protocol"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:80947060-d39b-4da6-bee0-21682e4a01fc"}},"_resolved":"/home/runner/work/_temp/forgesworn-anvil/canary-kit-2.7.4.tgz","_integrity":"sha512-LQYW0OIlokqifZs9WQAfGwu4dY5ts+eQaaHemxU+l+pylre1YwP2E47gsKdNPl75P/zs6XCKfKjXl9At8DM/bg==","repository":{"url":"git+https://github.com/forgesworn/canary-kit.git","type":"git"},"_npmVersion":"11.6.1","description":"Deepfake-proof identity verification. Open protocol, minimal dependencies.","directories":{},"sideEffects":false,"_nodeVersion":"24.11.0","dependencies":{"nsec-tree":"^1.4.0","@scure/bip32":"^2.0.1","@scure/bip39":"^2.0.1","spoken-token":"^2.0.2","@forgesworn/shamir-words":"^1.0.2"},"publishConfig":{"provenance":true},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.19.0","vite":"^8.0.0","serve":"^14.2.6","eslint":"^10.0.3","vitest":"^4.1.0","@types/ws":"^8.18.1","@eslint/js":"^10.0.1","typescript":"^6.0.2","@types/node":"^25.6.0","geohash-kit":"^1.5.1","maplibre-gl":"^5.20.2","nostr-tools":"^2.23.3","@noble/curves":"^2.0.1","@noble/hashes":"^2.0.1","@playwright/test":"^1.58.2","qrcode-generator":"^2.0.4","typescript-eslint":"^8.57.1","@vitest/coverage-v8":"^4.1.0","vite-plugin-singlefile":"^2.3.2"},"_npmOperationalInternal":{"tmp":"tmp/canary-kit_2.7.4_1781599634134_0.7712421641957428","host":"s3://npm-registry-packages-npm-production"}},"2.7.5":{"name":"canary-kit","version":"2.7.5","keywords":["canary","canary-kit","verification","identity","duress","safe-word","nostr","hmac","totp","deepfake","voice-clone","meshtastic","liveness","dead-mans-switch","coercion-resistance","spoken-word","bidirectional-verification","offline-first","minimal-dependencies","voice-phishing","vishing","anti-fraud","phone-verification","family-safety"],"author":{"name":"forgesworn"},"license":"MIT","_id":"canary-kit@2.7.5","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://canary.trotters.cc/","bugs":{"url":"https://github.com/forgesworn/canary-kit/issues"},"dist":{"shasum":"c2b3a175fa93e7696d134f3c4c28273634b8c9c8","tarball":"https://registry.npmjs.org/canary-kit/-/canary-kit-2.7.5.tgz","fileCount":71,"integrity":"sha512-/z5pxoNlIoOu0FKir1OQEn+euaFbniPcX9mEAkipQwv02O1uAWp/8dvOGXWJULoiRYfgnW42mmgehFztmBwfQA==","signatures":[{"sig":"MEUCIQCiAEqicBNUjpwmWBnMDtnN7tjmro3pYhBFD0IDcCWu4gIgQh27iri/a/pAonr2YYyPQrzJGhg/K1fm6JQddEXBzrU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/canary-kit@2.7.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":478597},"main":"./dist/index.js","type":"module","_from":"file:/home/runner/work/_temp/forgesworn-anvil/canary-kit-2.7.5.tgz","types":"./dist/index.d.ts","engines":{"node":">=24"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./sync":{"types":"./dist/sync.d.ts","import":"./dist/sync.js"},"./nostr":{"types":"./dist/nostr.d.ts","import":"./dist/nostr.js"},"./token":{"types":"./dist/token.d.ts","import":"./dist/token.js"},"./beacon":{"types":"./dist/beacon.d.ts","import":"./dist/beacon.js"},"./session":{"types":"./dist/session.d.ts","import":"./dist/session.js"},"./encoding":{"types":"./dist/encoding.d.ts","import":"./dist/encoding.js"},"./wordlist":{"types":"./dist/wordlist.d.ts","import":"./dist/wordlist.js"}},"funding":{"url":"lightning:thedonkey@strike.me","type":"lightning"},"scripts":{"dev":"vite --config vite.config.ts","demo":"npm run build:app && serve docs -l 8787","lint":"eslint src/","test":"vitest run","bench":"vitest bench","build":"tsc","record":"node docs/record/record.js","lint:fix":"eslint src/ --fix","test:e2e":"playwright test --config e2e/playwright.config.ts","build:app":"vite build --config vite.config.ts","typecheck":"tsc --noEmit","test:watch":"vitest","test:e2e:ui":"playwright test --config e2e/playwright.config.ts --ui","build:single":"vite build --config vite.singlefile.config.ts && cp dist-single/index.html canary.html && echo '✓ canary.html ready'","record:short":"node docs/record/record.js short","record:silent":"node docs/record/record.js --no-voice","record:extended":"node docs/record/record.js extended","test:e2e:online":"playwright test --config e2e/playwright.config.ts --project=online","test:e2e:offline":"playwright test --config e2e/playwright.config.ts --project=offline","test:e2e:protocol":"playwright test --config e2e/playwright.config.ts --project=protocol"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:80947060-d39b-4da6-bee0-21682e4a01fc"}},"_resolved":"/home/runner/work/_temp/forgesworn-anvil/canary-kit-2.7.5.tgz","_integrity":"sha512-/z5pxoNlIoOu0FKir1OQEn+euaFbniPcX9mEAkipQwv02O1uAWp/8dvOGXWJULoiRYfgnW42mmgehFztmBwfQA==","repository":{"url":"git+https://github.com/forgesworn/canary-kit.git","type":"git"},"_npmVersion":"11.6.1","description":"Deepfake-proof identity verification. Open protocol, minimal dependencies.","directories":{},"sideEffects":false,"_nodeVersion":"24.11.0","dependencies":{"nsec-tree":"^1.4.0","@scure/bip32":"^2.0.1","@scure/bip39":"^2.0.1","spoken-token":"^2.0.2","@forgesworn/shamir-words":"^1.0.2"},"publishConfig":{"provenance":true},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.19.0","vite":"^8.0.0","serve":"^14.2.6","eslint":"^10.0.3","vitest":"^4.1.0","@types/ws":"^8.18.1","@eslint/js":"^10.0.1","typescript":"^6.0.2","@types/node":"^25.6.0","geohash-kit":"^1.5.1","maplibre-gl":"^5.20.2","nostr-tools":"^2.23.3","signet-login":"^0.9.15","@noble/curves":"^2.0.1","@noble/hashes":"^2.0.1","@playwright/test":"^1.58.2","qrcode-generator":"^2.0.4","typescript-eslint":"^8.57.1","@vitest/coverage-v8":"^4.1.0","vite-plugin-singlefile":"^2.3.2"},"_npmOperationalInternal":{"tmp":"tmp/canary-kit_2.7.5_1781601226846_0.5398160172352708","host":"s3://npm-registry-packages-npm-production"}},"2.7.6":{"name":"canary-kit","version":"2.7.6","keywords":["canary","canary-kit","verification","identity","duress","safe-word","nostr","hmac","totp","deepfake","voice-clone","meshtastic","liveness","dead-mans-switch","coercion-resistance","spoken-word","bidirectional-verification","offline-first","minimal-dependencies","voice-phishing","vishing","anti-fraud","phone-verification","family-safety"],"author":{"name":"forgesworn"},"license":"MIT","_id":"canary-kit@2.7.6","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://canary.trotters.cc/","bugs":{"url":"https://github.com/forgesworn/canary-kit/issues"},"dist":{"shasum":"2b803fea219b0e711025053f9ae2f34d7e8e6d7a","tarball":"https://registry.npmjs.org/canary-kit/-/canary-kit-2.7.6.tgz","fileCount":71,"integrity":"sha512-kNRJg/Z0bDCzQusMcpZHN07QwgAv0mChYc0BZJ0rcZH7aiJLelyj61+jMPr7uYwyoAgmXwSH9HhXfKgV2rf2Vg==","signatures":[{"sig":"MEQCIDMk2BkD9+xhPiCpQ1Gnigj5j5e+7123tU2oijigE3a6AiBSJiIyWsNMeET8eHxlSp5Yv6lSVU3xDKsmh8/Apt4kJQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/canary-kit@2.7.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":478597},"main":"./dist/index.js","type":"module","_from":"file:/home/runner/work/_temp/forgesworn-anvil/canary-kit-2.7.6.tgz","types":"./dist/index.d.ts","engines":{"node":">=24"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./sync":{"types":"./dist/sync.d.ts","import":"./dist/sync.js"},"./nostr":{"types":"./dist/nostr.d.ts","import":"./dist/nostr.js"},"./token":{"types":"./dist/token.d.ts","import":"./dist/token.js"},"./beacon":{"types":"./dist/beacon.d.ts","import":"./dist/beacon.js"},"./session":{"types":"./dist/session.d.ts","import":"./dist/session.js"},"./encoding":{"types":"./dist/encoding.d.ts","import":"./dist/encoding.js"},"./wordlist":{"types":"./dist/wordlist.d.ts","import":"./dist/wordlist.js"}},"funding":{"url":"lightning:thedonkey@strike.me","type":"lightning"},"scripts":{"dev":"vite --config vite.config.ts","demo":"npm run build:app && serve docs -l 8787","lint":"eslint src/","test":"vitest run","bench":"vitest bench","build":"tsc","record":"node docs/record/record.js","lint:fix":"eslint src/ --fix","test:e2e":"playwright test --config e2e/playwright.config.ts","build:app":"vite build --config vite.config.ts","typecheck":"tsc --noEmit","test:watch":"vitest","test:e2e:ui":"playwright test --config e2e/playwright.config.ts --ui","build:single":"vite build --config vite.singlefile.config.ts && cp dist-single/index.html canary.html && echo '✓ canary.html ready'","record:short":"node docs/record/record.js short","record:silent":"node docs/record/record.js --no-voice","record:extended":"node docs/record/record.js extended","test:e2e:online":"playwright test --config e2e/playwright.config.ts --project=online","test:e2e:offline":"playwright test --config e2e/playwright.config.ts --project=offline","test:e2e:protocol":"playwright test --config e2e/playwright.config.ts --project=protocol"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:80947060-d39b-4da6-bee0-21682e4a01fc"}},"_resolved":"/home/runner/work/_temp/forgesworn-anvil/canary-kit-2.7.6.tgz","_integrity":"sha512-kNRJg/Z0bDCzQusMcpZHN07QwgAv0mChYc0BZJ0rcZH7aiJLelyj61+jMPr7uYwyoAgmXwSH9HhXfKgV2rf2Vg==","repository":{"url":"git+https://github.com/forgesworn/canary-kit.git","type":"git"},"_npmVersion":"11.6.1","description":"Deepfake-proof identity verification. Open protocol, minimal dependencies.","directories":{},"sideEffects":false,"_nodeVersion":"24.11.0","dependencies":{"nsec-tree":"^1.4.0","@scure/bip32":"^2.0.1","@scure/bip39":"^2.0.1","spoken-token":"^2.0.2","@forgesworn/shamir-words":"^1.0.2"},"publishConfig":{"provenance":true},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.19.0","vite":"^8.0.0","serve":"^14.2.6","eslint":"^10.0.3","vitest":"^4.1.0","@types/ws":"^8.18.1","@eslint/js":"^10.0.1","typescript":"^6.0.2","@types/node":"^25.6.0","geohash-kit":"^1.5.1","maplibre-gl":"^5.20.2","nostr-tools":"^2.23.3","signet-login":"^0.10.0","@noble/curves":"^2.0.1","@noble/hashes":"^2.0.1","@playwright/test":"^1.58.2","qrcode-generator":"^2.0.4","typescript-eslint":"^8.57.1","@vitest/coverage-v8":"^4.1.0","vite-plugin-singlefile":"^2.3.2"},"_npmOperationalInternal":{"tmp":"tmp/canary-kit_2.7.6_1781609127458_0.4431822516605348","host":"s3://npm-registry-packages-npm-production"}},"2.8.0":{"name":"canary-kit","version":"2.8.0","keywords":["canary","canary-kit","verification","identity","duress","safe-word","nostr","hmac","totp","deepfake","voice-clone","meshtastic","liveness","dead-mans-switch","coercion-resistance","spoken-word","bidirectional-verification","offline-first","minimal-dependencies","voice-phishing","vishing","anti-fraud","phone-verification","family-safety"],"author":{"name":"forgesworn"},"license":"MIT","_id":"canary-kit@2.8.0","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://canary.trotters.cc/","bugs":{"url":"https://github.com/forgesworn/canary-kit/issues"},"dist":{"shasum":"bea49546fc473cbdaac93d935e69d4477c4256a2","tarball":"https://registry.npmjs.org/canary-kit/-/canary-kit-2.8.0.tgz","fileCount":71,"integrity":"sha512-Y8HljdtQxCW4zHReCB8nCTR5W3Lu4ffuCBjg/i70uyhctzYB7tJ5TOF+2hlmqduCUSaU/7dgD14tCpWhKTK23A==","signatures":[{"sig":"MEUCIQDK2s/pDanhpPF6X45f8ySkoo/yVzSxqRRUi0pyuJSsKwIgfemPWW2HXk5KbskFVREA5gaYMuJ+z6PgJLLMOgE0YF0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/canary-kit@2.8.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":478597},"main":"./dist/index.js","type":"module","_from":"file:/home/runner/work/_temp/forgesworn-anvil/canary-kit-2.8.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=24"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./sync":{"types":"./dist/sync.d.ts","import":"./dist/sync.js"},"./nostr":{"types":"./dist/nostr.d.ts","import":"./dist/nostr.js"},"./token":{"types":"./dist/token.d.ts","import":"./dist/token.js"},"./beacon":{"types":"./dist/beacon.d.ts","import":"./dist/beacon.js"},"./session":{"types":"./dist/session.d.ts","import":"./dist/session.js"},"./encoding":{"types":"./dist/encoding.d.ts","import":"./dist/encoding.js"},"./wordlist":{"types":"./dist/wordlist.d.ts","import":"./dist/wordlist.js"}},"funding":{"url":"lightning:thedonkey@strike.me","type":"lightning"},"scripts":{"dev":"vite --config vite.config.ts","demo":"npm run build:app && serve docs -l 8787","lint":"eslint src/","test":"vitest run","bench":"vitest bench","build":"tsc","record":"node docs/record/record.js","lint:fix":"eslint src/ --fix","test:e2e":"playwright test --config e2e/playwright.config.ts","build:app":"vite build --config vite.config.ts","typecheck":"tsc --noEmit","test:watch":"vitest","test:e2e:ui":"playwright test --config e2e/playwright.config.ts --ui","build:single":"vite build --config vite.singlefile.config.ts && cp dist-single/index.html canary.html && echo '✓ canary.html ready'","record:short":"node docs/record/record.js short","record:silent":"node docs/record/record.js --no-voice","record:extended":"node docs/record/record.js extended","test:e2e:online":"playwright test --config e2e/playwright.config.ts --project=online","test:e2e:offline":"playwright test --config e2e/playwright.config.ts --project=offline","test:e2e:protocol":"playwright test --config e2e/playwright.config.ts --project=protocol"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:80947060-d39b-4da6-bee0-21682e4a01fc"}},"_resolved":"/home/runner/work/_temp/forgesworn-anvil/canary-kit-2.8.0.tgz","_integrity":"sha512-Y8HljdtQxCW4zHReCB8nCTR5W3Lu4ffuCBjg/i70uyhctzYB7tJ5TOF+2hlmqduCUSaU/7dgD14tCpWhKTK23A==","repository":{"url":"git+https://github.com/forgesworn/canary-kit.git","type":"git"},"_npmVersion":"11.6.1","description":"Deepfake-proof identity verification. Open protocol, minimal dependencies.","directories":{},"sideEffects":false,"_nodeVersion":"24.11.0","dependencies":{"nsec-tree":"^1.4.0","@scure/bip32":"^2.0.1","@scure/bip39":"^2.0.1","spoken-token":"^2.0.2","@forgesworn/shamir-words":"^1.0.2"},"publishConfig":{"provenance":true},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.19.0","vite":"^8.0.0","serve":"^14.2.6","eslint":"^10.0.3","vitest":"^4.1.0","@types/ws":"^8.18.1","@eslint/js":"^10.0.1","typescript":"^6.0.2","@types/node":"^25.6.0","geohash-kit":"^1.5.1","maplibre-gl":"^5.20.2","nostr-tools":"^2.23.3","signet-login":"^0.10.0","@noble/curves":"^2.0.1","@noble/hashes":"^2.0.1","@playwright/test":"^1.58.2","qrcode-generator":"^2.0.4","typescript-eslint":"^8.57.1","@vitest/coverage-v8":"^4.1.0","vite-plugin-singlefile":"^2.3.2"},"_npmOperationalInternal":{"tmp":"tmp/canary-kit_2.8.0_1781612306936_0.7373533196976372","host":"s3://npm-registry-packages-npm-production"}},"2.8.2":{"name":"canary-kit","version":"2.8.2","keywords":["canary","canary-kit","verification","identity","duress","safe-word","nostr","hmac","totp","deepfake","voice-clone","meshtastic","liveness","dead-mans-switch","coercion-resistance","spoken-word","bidirectional-verification","offline-first","minimal-dependencies","voice-phishing","vishing","anti-fraud","phone-verification","family-safety"],"author":{"name":"forgesworn"},"license":"MIT","_id":"canary-kit@2.8.2","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://canary.trotters.cc/","bugs":{"url":"https://github.com/forgesworn/canary-kit/issues"},"dist":{"shasum":"0859bfb2a5acd8b43bd2817737729c2193c100a0","tarball":"https://registry.npmjs.org/canary-kit/-/canary-kit-2.8.2.tgz","fileCount":71,"integrity":"sha512-Q1z4HF6ZzAqxsawUdFwtQB/NIEljklZA3f2Rgp4gb65qq1HNd6k4bfZ5kdnmjMavPxztT6KStfTvopoAfN/O2A==","signatures":[{"sig":"MEUCIFXjtEMJbJoR9f3EnkBg9C6+f5+3+scJeCBpXXpp9uMaAiEArkF2NB3C3LN+meaHb4sqG3Ft4gjd2ooUB5uBFNvKs54=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/canary-kit@2.8.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":478597},"main":"./dist/index.js","type":"module","_from":"file:/home/runner/work/_temp/forgesworn-anvil/canary-kit-2.8.2.tgz","types":"./dist/index.d.ts","engines":{"node":">=24"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./sync":{"types":"./dist/sync.d.ts","import":"./dist/sync.js"},"./nostr":{"types":"./dist/nostr.d.ts","import":"./dist/nostr.js"},"./token":{"types":"./dist/token.d.ts","import":"./dist/token.js"},"./beacon":{"types":"./dist/beacon.d.ts","import":"./dist/beacon.js"},"./session":{"types":"./dist/session.d.ts","import":"./dist/session.js"},"./encoding":{"types":"./dist/encoding.d.ts","import":"./dist/encoding.js"},"./wordlist":{"types":"./dist/wordlist.d.ts","import":"./dist/wordlist.js"}},"funding":{"url":"lightning:thedonkey@strike.me","type":"lightning"},"scripts":{"dev":"vite --config vite.config.ts","demo":"npm run build:app && serve docs -l 8787","lint":"eslint src/","test":"vitest run","bench":"vitest bench","build":"tsc","record":"node docs/record/record.js","lint:fix":"eslint src/ --fix","test:e2e":"playwright test --config e2e/playwright.config.ts","build:app":"vite build --config vite.config.ts","typecheck":"tsc --noEmit","test:watch":"vitest","test:e2e:ui":"playwright test --config e2e/playwright.config.ts --ui","build:single":"vite build --config vite.singlefile.config.ts && cp dist-single/index.html canary.html && echo '✓ canary.html ready'","record:short":"node docs/record/record.js short","record:silent":"node docs/record/record.js --no-voice","record:extended":"node docs/record/record.js extended","test:e2e:online":"playwright test --config e2e/playwright.config.ts --project=online","test:e2e:offline":"playwright test --config e2e/playwright.config.ts --project=offline","test:e2e:protocol":"playwright test --config e2e/playwright.config.ts --project=protocol"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:80947060-d39b-4da6-bee0-21682e4a01fc"}},"_resolved":"/home/runner/work/_temp/forgesworn-anvil/canary-kit-2.8.2.tgz","_integrity":"sha512-Q1z4HF6ZzAqxsawUdFwtQB/NIEljklZA3f2Rgp4gb65qq1HNd6k4bfZ5kdnmjMavPxztT6KStfTvopoAfN/O2A==","repository":{"url":"git+https://github.com/forgesworn/canary-kit.git","type":"git"},"_npmVersion":"11.6.1","description":"Deepfake-proof identity verification. Open protocol, minimal dependencies.","directories":{},"sideEffects":false,"_nodeVersion":"24.11.0","dependencies":{"nsec-tree":"^1.4.0","@scure/bip32":"^2.0.1","@scure/bip39":"^2.0.1","spoken-token":"^2.0.2","@forgesworn/shamir-words":"^1.0.2"},"publishConfig":{"provenance":true},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.19.0","vite":"^8.0.0","serve":"^14.2.6","eslint":"^10.0.3","vitest":"^4.1.0","@types/ws":"^8.18.1","@eslint/js":"^10.0.1","typescript":"^6.0.2","@types/node":"^25.6.0","geohash-kit":"^1.5.1","maplibre-gl":"^5.20.2","nostr-tools":"^2.23.3","signet-login":"^0.10.2","@noble/curves":"^2.0.1","@noble/hashes":"^2.0.1","@playwright/test":"^1.58.2","qrcode-generator":"^2.0.4","typescript-eslint":"^8.57.1","@vitest/coverage-v8":"^4.1.0","vite-plugin-singlefile":"^2.3.2"},"_npmOperationalInternal":{"tmp":"tmp/canary-kit_2.8.2_1781616867697_0.9816800276641453","host":"s3://npm-registry-packages-npm-production"}},"2.8.3":{"name":"canary-kit","version":"2.8.3","keywords":["canary","canary-kit","verification","identity","duress","safe-word","nostr","hmac","totp","deepfake","voice-clone","meshtastic","liveness","dead-mans-switch","coercion-resistance","spoken-word","bidirectional-verification","offline-first","minimal-dependencies","voice-phishing","vishing","anti-fraud","phone-verification","family-safety"],"author":{"name":"forgesworn"},"license":"MIT","_id":"canary-kit@2.8.3","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://canary.trotters.cc/","bugs":{"url":"https://github.com/forgesworn/canary-kit/issues"},"dist":{"shasum":"91b2a1cb9cd3183757c2f73ef437eabc7be1b1ee","tarball":"https://registry.npmjs.org/canary-kit/-/canary-kit-2.8.3.tgz","fileCount":71,"integrity":"sha512-FlJ+1E/QdTLK4SdfiDjRyWD6Facxs8xw5KT8xNfQDc+bvanT/QOquDfcRqHoEkydWC3ZlMMTxxCkk7dSV52DOw==","signatures":[{"sig":"MEUCIQDoKQjITjYA2PwrT+lLjKyqVLsBThe6pth6gqHQD/rQ/AIgCtAKyFU0i2YmMZ8xTWEq+jo27uuyehcBmqzWxTr7PzM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/canary-kit@2.8.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":478597},"main":"./dist/index.js","type":"module","_from":"file:/home/runner/work/_temp/forgesworn-anvil/canary-kit-2.8.3.tgz","types":"./dist/index.d.ts","engines":{"node":">=24"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./sync":{"types":"./dist/sync.d.ts","import":"./dist/sync.js"},"./nostr":{"types":"./dist/nostr.d.ts","import":"./dist/nostr.js"},"./token":{"types":"./dist/token.d.ts","import":"./dist/token.js"},"./beacon":{"types":"./dist/beacon.d.ts","import":"./dist/beacon.js"},"./session":{"types":"./dist/session.d.ts","import":"./dist/session.js"},"./encoding":{"types":"./dist/encoding.d.ts","import":"./dist/encoding.js"},"./wordlist":{"types":"./dist/wordlist.d.ts","import":"./dist/wordlist.js"}},"funding":{"url":"lightning:thedonkey@strike.me","type":"lightning"},"scripts":{"dev":"vite --config vite.config.ts","demo":"npm run build:app && serve docs -l 8787","lint":"eslint src/","test":"vitest run","bench":"vitest bench","build":"tsc","record":"node docs/record/record.js","lint:fix":"eslint src/ --fix","test:e2e":"playwright test --config e2e/playwright.config.ts","build:app":"vite build --config vite.config.ts","typecheck":"tsc --noEmit","test:watch":"vitest","test:e2e:ui":"playwright test --config e2e/playwright.config.ts --ui","build:single":"vite build --config vite.singlefile.config.ts && cp dist-single/index.html canary.html && echo '✓ canary.html ready'","record:short":"node docs/record/record.js short","record:silent":"node docs/record/record.js --no-voice","record:extended":"node docs/record/record.js extended","test:e2e:online":"playwright test --config e2e/playwright.config.ts --project=online","test:e2e:offline":"playwright test --config e2e/playwright.config.ts --project=offline","test:e2e:protocol":"playwright test --config e2e/playwright.config.ts --project=protocol"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:80947060-d39b-4da6-bee0-21682e4a01fc"}},"_resolved":"/home/runner/work/_temp/forgesworn-anvil/canary-kit-2.8.3.tgz","_integrity":"sha512-FlJ+1E/QdTLK4SdfiDjRyWD6Facxs8xw5KT8xNfQDc+bvanT/QOquDfcRqHoEkydWC3ZlMMTxxCkk7dSV52DOw==","repository":{"url":"git+https://github.com/forgesworn/canary-kit.git","type":"git"},"_npmVersion":"11.6.1","description":"Deepfake-proof identity verification. Open protocol, minimal dependencies.","directories":{},"sideEffects":false,"_nodeVersion":"24.11.0","dependencies":{"nsec-tree":"^1.4.0","@scure/bip32":"^2.0.1","@scure/bip39":"^2.0.1","spoken-token":"^2.0.2","@forgesworn/shamir-words":"^1.0.2"},"publishConfig":{"provenance":true},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.19.0","vite":"^8.0.0","serve":"^14.2.6","eslint":"^10.0.3","vitest":"^4.1.0","@types/ws":"^8.18.1","@eslint/js":"^10.0.1","typescript":"^6.0.2","@types/node":"^25.6.0","geohash-kit":"^1.5.1","maplibre-gl":"^5.20.2","nostr-tools":"^2.23.3","signet-login":"^0.10.2","@noble/curves":"^2.0.1","@noble/hashes":"^2.0.1","@playwright/test":"^1.58.2","qrcode-generator":"^2.0.4","typescript-eslint":"^8.57.1","@vitest/coverage-v8":"^4.1.0","vite-plugin-singlefile":"^2.3.2"},"_npmOperationalInternal":{"tmp":"tmp/canary-kit_2.8.3_1781618685221_0.973763610825926","host":"s3://npm-registry-packages-npm-production"}},"2.8.4":{"name":"canary-kit","version":"2.8.4","keywords":["canary","canary-kit","verification","identity","duress","safe-word","nostr","hmac","totp","deepfake","voice-clone","meshtastic","liveness","dead-mans-switch","coercion-resistance","spoken-word","bidirectional-verification","offline-first","minimal-dependencies","voice-phishing","vishing","anti-fraud","phone-verification","family-safety"],"author":{"name":"forgesworn"},"license":"MIT","_id":"canary-kit@2.8.4","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://canary.trotters.cc/","bugs":{"url":"https://github.com/forgesworn/canary-kit/issues"},"dist":{"shasum":"6b0016f51df2b4cecc3f4a75b380646010d262c2","tarball":"https://registry.npmjs.org/canary-kit/-/canary-kit-2.8.4.tgz","fileCount":71,"integrity":"sha512-0Xg8NZsI3ltDLkA3kELNyy+V1QiQM6PbW8lhEeNx9uJx18Jf9AgZZG1F0b5IT/xv2y7NdGUEBVD+qnA+SkNpnQ==","signatures":[{"sig":"MEYCIQDmUMepTPVIg6CtNUUdRZuM9DP6RoDZLIQjBFsfjAmYaAIhAP1XYOEAbeunbL4JOOejmemiDkXSM3sy82Wi4JviQ7vK","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/canary-kit@2.8.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":478597},"main":"./dist/index.js","type":"module","_from":"file:/home/runner/work/_temp/forgesworn-anvil/canary-kit-2.8.4.tgz","types":"./dist/index.d.ts","engines":{"node":">=24"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./sync":{"types":"./dist/sync.d.ts","import":"./dist/sync.js"},"./nostr":{"types":"./dist/nostr.d.ts","import":"./dist/nostr.js"},"./token":{"types":"./dist/token.d.ts","import":"./dist/token.js"},"./beacon":{"types":"./dist/beacon.d.ts","import":"./dist/beacon.js"},"./session":{"types":"./dist/session.d.ts","import":"./dist/session.js"},"./encoding":{"types":"./dist/encoding.d.ts","import":"./dist/encoding.js"},"./wordlist":{"types":"./dist/wordlist.d.ts","import":"./dist/wordlist.js"}},"funding":{"url":"lightning:thedonkey@strike.me","type":"lightning"},"scripts":{"dev":"vite --config vite.config.ts","demo":"npm run build:app && serve docs -l 8787","lint":"eslint src/","test":"vitest run","bench":"vitest bench","build":"tsc","record":"node docs/record/record.js","lint:fix":"eslint src/ --fix","test:e2e":"playwright test --config e2e/playwright.config.ts","build:app":"vite build --config vite.config.ts","typecheck":"tsc --noEmit","test:watch":"vitest","test:e2e:ui":"playwright test --config e2e/playwright.config.ts --ui","build:single":"vite build --config vite.singlefile.config.ts && cp dist-single/index.html canary.html && echo '✓ canary.html ready'","record:short":"node docs/record/record.js short","record:silent":"node docs/record/record.js --no-voice","record:extended":"node docs/record/record.js extended","test:e2e:online":"playwright test --config e2e/playwright.config.ts --project=online","test:e2e:offline":"playwright test --config e2e/playwright.config.ts --project=offline","test:e2e:protocol":"playwright test --config e2e/playwright.config.ts --project=protocol"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:80947060-d39b-4da6-bee0-21682e4a01fc"}},"_resolved":"/home/runner/work/_temp/forgesworn-anvil/canary-kit-2.8.4.tgz","_integrity":"sha512-0Xg8NZsI3ltDLkA3kELNyy+V1QiQM6PbW8lhEeNx9uJx18Jf9AgZZG1F0b5IT/xv2y7NdGUEBVD+qnA+SkNpnQ==","repository":{"url":"git+https://github.com/forgesworn/canary-kit.git","type":"git"},"_npmVersion":"11.6.1","description":"Deepfake-proof identity verification. Open protocol, minimal dependencies.","directories":{},"sideEffects":false,"_nodeVersion":"24.11.0","dependencies":{"nsec-tree":"^1.4.0","@scure/bip32":"^2.0.1","@scure/bip39":"^2.0.1","spoken-token":"^2.0.2","@forgesworn/shamir-words":"^1.0.2"},"publishConfig":{"provenance":true},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.19.0","vite":"^8.0.0","serve":"^14.2.6","eslint":"^10.0.3","vitest":"^4.1.0","@types/ws":"^8.18.1","@eslint/js":"^10.0.1","typescript":"^6.0.2","@types/node":"^25.6.0","geohash-kit":"^1.5.1","maplibre-gl":"^5.20.2","nostr-tools":"^2.23.3","signet-login":"^0.10.3","@noble/curves":"^2.0.1","@noble/hashes":"^2.0.1","@playwright/test":"^1.58.2","qrcode-generator":"^2.0.4","typescript-eslint":"^8.57.1","@vitest/coverage-v8":"^4.1.0","vite-plugin-singlefile":"^2.3.2"},"_npmOperationalInternal":{"tmp":"tmp/canary-kit_2.8.4_1781643126235_0.1848867862417518","host":"s3://npm-registry-packages-npm-production"}},"2.8.5":{"name":"canary-kit","version":"2.8.5","keywords":["canary","canary-kit","verification","identity","duress","safe-word","nostr","hmac","totp","deepfake","voice-clone","meshtastic","liveness","dead-mans-switch","coercion-resistance","spoken-word","bidirectional-verification","offline-first","minimal-dependencies","voice-phishing","vishing","anti-fraud","phone-verification","family-safety"],"author":{"name":"forgesworn"},"license":"MIT","_id":"canary-kit@2.8.5","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://canary.trotters.cc/","bugs":{"url":"https://github.com/forgesworn/canary-kit/issues"},"dist":{"shasum":"02e1d0fab093fd4d8d14ad47923d11c871a61d00","tarball":"https://registry.npmjs.org/canary-kit/-/canary-kit-2.8.5.tgz","fileCount":71,"integrity":"sha512-RimPIsT5Qwwlre+UAcquOpxtt9qFiqkyAGGDrV9oe6Fh5KXRhgLBtDOOuq8EJ/KTm8Jn9cwl9hbLcxhdBJWymQ==","signatures":[{"sig":"MEUCIDFlim2ARDao3qt3rIIbKcjf9SKSQ1cnls+riDPkZ9aQAiEA8fmru71HHaZYWGvWgQpJYmoTHb9Q9NpVMs2rUxlkjEU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/canary-kit@2.8.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":478597},"main":"./dist/index.js","type":"module","_from":"file:/home/runner/work/_temp/forgesworn-anvil/canary-kit-2.8.5.tgz","types":"./dist/index.d.ts","engines":{"node":">=24"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./sync":{"types":"./dist/sync.d.ts","import":"./dist/sync.js"},"./nostr":{"types":"./dist/nostr.d.ts","import":"./dist/nostr.js"},"./token":{"types":"./dist/token.d.ts","import":"./dist/token.js"},"./beacon":{"types":"./dist/beacon.d.ts","import":"./dist/beacon.js"},"./session":{"types":"./dist/session.d.ts","import":"./dist/session.js"},"./encoding":{"types":"./dist/encoding.d.ts","import":"./dist/encoding.js"},"./wordlist":{"types":"./dist/wordlist.d.ts","import":"./dist/wordlist.js"}},"funding":{"url":"lightning:thedonkey@strike.me","type":"lightning"},"scripts":{"dev":"vite --config vite.config.ts","demo":"npm run build:app && serve docs -l 8787","lint":"eslint src/","test":"vitest run","bench":"vitest bench","build":"tsc","record":"node docs/record/record.js","lint:fix":"eslint src/ --fix","test:e2e":"playwright test --config e2e/playwright.config.ts","build:app":"vite build --config vite.config.ts","typecheck":"tsc --noEmit","test:watch":"vitest","test:e2e:ui":"playwright test --config e2e/playwright.config.ts --ui","build:single":"vite build --config vite.singlefile.config.ts && cp dist-single/index.html canary.html && echo '✓ canary.html ready'","record:short":"node docs/record/record.js short","record:silent":"node docs/record/record.js --no-voice","record:extended":"node docs/record/record.js extended","test:e2e:online":"playwright test --config e2e/playwright.config.ts --project=online","test:e2e:offline":"playwright test --config e2e/playwright.config.ts --project=offline","test:e2e:protocol":"playwright test --config e2e/playwright.config.ts --project=protocol"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:80947060-d39b-4da6-bee0-21682e4a01fc"}},"_resolved":"/home/runner/work/_temp/forgesworn-anvil/canary-kit-2.8.5.tgz","_integrity":"sha512-RimPIsT5Qwwlre+UAcquOpxtt9qFiqkyAGGDrV9oe6Fh5KXRhgLBtDOOuq8EJ/KTm8Jn9cwl9hbLcxhdBJWymQ==","repository":{"url":"git+https://github.com/forgesworn/canary-kit.git","type":"git"},"_npmVersion":"11.6.1","description":"Deepfake-proof identity verification. Open protocol, minimal dependencies.","directories":{},"sideEffects":false,"_nodeVersion":"24.11.0","dependencies":{"nsec-tree":"^1.4.0","@scure/bip32":"^2.0.1","@scure/bip39":"^2.0.1","spoken-token":"^2.0.2","@forgesworn/shamir-words":"^1.0.2"},"publishConfig":{"provenance":true},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.19.0","vite":"^8.0.0","serve":"^14.2.6","eslint":"^10.0.3","vitest":"^4.1.0","@types/ws":"^8.18.1","@eslint/js":"^10.0.1","typescript":"^6.0.2","@types/node":"^25.6.0","geohash-kit":"^1.5.1","maplibre-gl":"^5.20.2","nostr-tools":"^2.23.3","signet-login":"^0.10.3","@noble/curves":"^2.0.1","@noble/hashes":"^2.0.1","@playwright/test":"^1.58.2","qrcode-generator":"^2.0.4","typescript-eslint":"^8.57.1","@vitest/coverage-v8":"^4.1.0","vite-plugin-singlefile":"^2.3.2"},"_npmOperationalInternal":{"tmp":"tmp/canary-kit_2.8.5_1781673963372_0.06948328377378399","host":"s3://npm-registry-packages-npm-production"}},"2.8.6":{"name":"canary-kit","version":"2.8.6","keywords":["canary","canary-kit","verification","identity","duress","safe-word","nostr","hmac","totp","deepfake","voice-clone","meshtastic","liveness","dead-mans-switch","coercion-resistance","spoken-word","bidirectional-verification","offline-first","minimal-dependencies","voice-phishing","vishing","anti-fraud","phone-verification","family-safety"],"author":{"name":"forgesworn"},"license":"MIT","_id":"canary-kit@2.8.6","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://canary.trotters.cc/","bugs":{"url":"https://github.com/forgesworn/canary-kit/issues"},"dist":{"shasum":"dad7843e9b4a3d7ae02de6831e58396c1d99749d","tarball":"https://registry.npmjs.org/canary-kit/-/canary-kit-2.8.6.tgz","fileCount":71,"integrity":"sha512-Nayny/ZjbEWmQ798ZFvdVFEe0ex8Htx7t0QWorUX51JTXrl07PO4sIBQJIVtCLGBdly1NE4a0ttAY6HayQxX+A==","signatures":[{"sig":"MEUCIQDp+73duAdeutIICWUXBuyy65Qbyk354w0em3sU+l2U5AIgPCCIu0DgU8Q5uciDW3Fnvg0ZNqYiXqRTFicb5oOtLN0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/canary-kit@2.8.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":478597},"main":"./dist/index.js","type":"module","_from":"file:/home/runner/work/_temp/forgesworn-anvil/canary-kit-2.8.6.tgz","types":"./dist/index.d.ts","engines":{"node":">=24"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./sync":{"types":"./dist/sync.d.ts","import":"./dist/sync.js"},"./nostr":{"types":"./dist/nostr.d.ts","import":"./dist/nostr.js"},"./token":{"types":"./dist/token.d.ts","import":"./dist/token.js"},"./beacon":{"types":"./dist/beacon.d.ts","import":"./dist/beacon.js"},"./session":{"types":"./dist/session.d.ts","import":"./dist/session.js"},"./encoding":{"types":"./dist/encoding.d.ts","import":"./dist/encoding.js"},"./wordlist":{"types":"./dist/wordlist.d.ts","import":"./dist/wordlist.js"}},"funding":{"url":"lightning:thedonkey@strike.me","type":"lightning"},"scripts":{"dev":"vite --config vite.config.ts","demo":"npm run build:app && serve docs -l 8787","lint":"eslint src/","test":"vitest run","bench":"vitest bench","build":"tsc","record":"node docs/record/record.js","lint:fix":"eslint src/ --fix","test:e2e":"playwright test --config e2e/playwright.config.ts","build:app":"vite build --config vite.config.ts","typecheck":"tsc --noEmit","test:watch":"vitest","test:e2e:ui":"playwright test --config e2e/playwright.config.ts --ui","build:single":"vite build --config vite.singlefile.config.ts && cp dist-single/index.html canary.html && echo '✓ canary.html ready'","record:short":"node docs/record/record.js short","record:silent":"node docs/record/record.js --no-voice","record:extended":"node docs/record/record.js extended","test:e2e:online":"playwright test --config e2e/playwright.config.ts --project=online","test:e2e:offline":"playwright test --config e2e/playwright.config.ts --project=offline","test:e2e:protocol":"playwright test --config e2e/playwright.config.ts --project=protocol"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:80947060-d39b-4da6-bee0-21682e4a01fc"}},"_resolved":"/home/runner/work/_temp/forgesworn-anvil/canary-kit-2.8.6.tgz","_integrity":"sha512-Nayny/ZjbEWmQ798ZFvdVFEe0ex8Htx7t0QWorUX51JTXrl07PO4sIBQJIVtCLGBdly1NE4a0ttAY6HayQxX+A==","repository":{"url":"git+https://github.com/forgesworn/canary-kit.git","type":"git"},"_npmVersion":"11.6.1","description":"Deepfake-proof identity verification. Open protocol, minimal dependencies.","directories":{},"sideEffects":false,"_nodeVersion":"24.11.0","dependencies":{"nsec-tree":"^1.4.0","@scure/bip32":"^2.0.1","@scure/bip39":"^2.0.1","spoken-token":"^2.0.2","@forgesworn/shamir-words":"^1.0.2"},"publishConfig":{"provenance":true},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.19.0","vite":"^8.0.0","serve":"^14.2.6","eslint":"^10.0.3","vitest":"^4.1.0","@types/ws":"^8.18.1","@eslint/js":"^10.0.1","typescript":"^6.0.2","@types/node":"^25.6.0","geohash-kit":"^1.5.1","maplibre-gl":"^5.20.2","nostr-tools":"^2.23.3","signet-login":"^0.10.5","@noble/curves":"^2.0.1","@noble/hashes":"^2.0.1","@playwright/test":"^1.58.2","qrcode-generator":"^2.0.4","typescript-eslint":"^8.57.1","@vitest/coverage-v8":"^4.1.0","vite-plugin-singlefile":"^2.3.2"},"_npmOperationalInternal":{"tmp":"tmp/canary-kit_2.8.6_1781681993474_0.7465846873935171","host":"s3://npm-registry-packages-npm-production"}},"2.8.7":{"name":"canary-kit","version":"2.8.7","keywords":["canary","canary-kit","verification","identity","duress","safe-word","nostr","hmac","totp","deepfake","voice-clone","meshtastic","liveness","dead-mans-switch","coercion-resistance","spoken-word","bidirectional-verification","offline-first","minimal-dependencies","voice-phishing","vishing","anti-fraud","phone-verification","family-safety"],"author":{"name":"forgesworn"},"license":"MIT","_id":"canary-kit@2.8.7","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://canary.trotters.cc/","bugs":{"url":"https://github.com/forgesworn/canary-kit/issues"},"dist":{"shasum":"7c41ca0888eb8bff2eb1e26de6eea596188dbc9a","tarball":"https://registry.npmjs.org/canary-kit/-/canary-kit-2.8.7.tgz","fileCount":71,"integrity":"sha512-OIhdvkcQFf9HbqHyi+O3l+6TXzUla9azP+XbIdINTO6Mcg8QkgreUebacyBOfnHpzs+rfEmrmJT5Ku1bsuFnYw==","signatures":[{"sig":"MEQCIHBLhPBv7EwVIgtU8wEt3OK4nf3RVMvbUfY4DFpbGGcaAiBtA+tRPHZmMKdrgsRSqE9ceYNzuIcWUmwkFSVHSsX56Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/canary-kit@2.8.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":478597},"main":"./dist/index.js","type":"module","_from":"file:/home/runner/work/_temp/forgesworn-anvil/canary-kit-2.8.7.tgz","types":"./dist/index.d.ts","engines":{"node":">=24"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./sync":{"types":"./dist/sync.d.ts","import":"./dist/sync.js"},"./nostr":{"types":"./dist/nostr.d.ts","import":"./dist/nostr.js"},"./token":{"types":"./dist/token.d.ts","import":"./dist/token.js"},"./beacon":{"types":"./dist/beacon.d.ts","import":"./dist/beacon.js"},"./session":{"types":"./dist/session.d.ts","import":"./dist/session.js"},"./encoding":{"types":"./dist/encoding.d.ts","import":"./dist/encoding.js"},"./wordlist":{"types":"./dist/wordlist.d.ts","import":"./dist/wordlist.js"}},"funding":{"url":"lightning:thedonkey@strike.me","type":"lightning"},"scripts":{"dev":"vite --config vite.config.ts","demo":"npm run build:app && serve docs -l 8787","lint":"eslint src/","test":"vitest run","bench":"vitest bench","build":"tsc","record":"node docs/record/record.js","lint:fix":"eslint src/ --fix","test:e2e":"playwright test --config e2e/playwright.config.ts","build:app":"vite build --config vite.config.ts","typecheck":"tsc --noEmit","test:watch":"vitest","test:e2e:ui":"playwright test --config e2e/playwright.config.ts --ui","build:single":"vite build --config vite.singlefile.config.ts && cp dist-single/index.html canary.html && echo '✓ canary.html ready'","record:short":"node docs/record/record.js short","record:silent":"node docs/record/record.js --no-voice","record:extended":"node docs/record/record.js extended","test:e2e:online":"playwright test --config e2e/playwright.config.ts --project=online","test:e2e:offline":"playwright test --config e2e/playwright.config.ts --project=offline","test:e2e:protocol":"playwright test --config e2e/playwright.config.ts --project=protocol"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:80947060-d39b-4da6-bee0-21682e4a01fc"}},"_resolved":"/home/runner/work/_temp/forgesworn-anvil/canary-kit-2.8.7.tgz","_integrity":"sha512-OIhdvkcQFf9HbqHyi+O3l+6TXzUla9azP+XbIdINTO6Mcg8QkgreUebacyBOfnHpzs+rfEmrmJT5Ku1bsuFnYw==","repository":{"url":"git+https://github.com/forgesworn/canary-kit.git","type":"git"},"_npmVersion":"11.6.1","description":"Deepfake-proof identity verification. Open protocol, minimal dependencies.","directories":{},"sideEffects":false,"_nodeVersion":"24.11.0","dependencies":{"nsec-tree":"^1.4.0","@scure/bip32":"^2.0.1","@scure/bip39":"^2.0.1","spoken-token":"^2.0.2","@forgesworn/shamir-words":"^1.0.2"},"publishConfig":{"provenance":true},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.19.0","vite":"^8.0.0","serve":"^14.2.6","eslint":"^10.0.3","vitest":"^4.1.0","@types/ws":"^8.18.1","@eslint/js":"^10.0.1","typescript":"^6.0.2","@types/node":"^25.6.0","geohash-kit":"^1.5.1","maplibre-gl":"^5.20.2","nostr-tools":"^2.23.3","signet-login":"^0.10.7","@noble/curves":"^2.0.1","@noble/hashes":"^2.0.1","@playwright/test":"^1.58.2","qrcode-generator":"^2.0.4","typescript-eslint":"^8.57.1","@vitest/coverage-v8":"^4.1.0","vite-plugin-singlefile":"^2.3.2"},"_npmOperationalInternal":{"tmp":"tmp/canary-kit_2.8.7_1781691509277_0.863503497867933","host":"s3://npm-registry-packages-npm-production"}},"2.9.0":{"name":"canary-kit","version":"2.9.0","keywords":["canary","canary-kit","verification","identity","duress","safe-word","nostr","hmac","totp","deepfake","voice-clone","meshtastic","liveness","dead-mans-switch","coercion-resistance","spoken-word","bidirectional-verification","offline-first","minimal-dependencies","voice-phishing","vishing","anti-fraud","phone-verification","family-safety"],"author":{"name":"forgesworn"},"license":"MIT","_id":"canary-kit@2.9.0","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://canary.trotters.cc/","bugs":{"url":"https://github.com/forgesworn/canary-kit/issues"},"dist":{"shasum":"8ce1ebb40268b5c07bfa554cdccb5a7255297a22","tarball":"https://registry.npmjs.org/canary-kit/-/canary-kit-2.9.0.tgz","fileCount":71,"integrity":"sha512-pohk+AfKkELZkdgDp0UoaiRFXp4ujTAyg4S1SXjHlH94uoKUwJzHMLVTnTC0rkJIN9jtmuZMEr0vCO+H54lSXw==","signatures":[{"sig":"MEUCIQD+Aq37Eam+TtiFiyUd/hoLH99GbOchfaOsWpxXCldqjAIgZX292sEMYTsBC/WW+oKtLBcYNbvYIiDK1ytKVgP5iZw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/canary-kit@2.9.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":479042},"main":"./dist/index.js","type":"module","_from":"file:/home/runner/work/_temp/forgesworn-anvil/canary-kit-2.9.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=24"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./sync":{"types":"./dist/sync.d.ts","import":"./dist/sync.js"},"./nostr":{"types":"./dist/nostr.d.ts","import":"./dist/nostr.js"},"./token":{"types":"./dist/token.d.ts","import":"./dist/token.js"},"./beacon":{"types":"./dist/beacon.d.ts","import":"./dist/beacon.js"},"./session":{"types":"./dist/session.d.ts","import":"./dist/session.js"},"./encoding":{"types":"./dist/encoding.d.ts","import":"./dist/encoding.js"},"./wordlist":{"types":"./dist/wordlist.d.ts","import":"./dist/wordlist.js"}},"funding":{"url":"lightning:thedonkey@strike.me","type":"lightning"},"scripts":{"dev":"vite --config vite.config.ts","demo":"npm run build:app && serve docs -l 8787","lint":"eslint src/","test":"vitest run","bench":"vitest bench","build":"tsc","record":"node docs/record/record.js","lint:fix":"eslint src/ --fix","test:e2e":"playwright test --config e2e/playwright.config.ts","build:app":"vite build --config vite.config.ts","typecheck":"tsc --noEmit","test:watch":"vitest","test:e2e:ui":"playwright test --config e2e/playwright.config.ts --ui","build:single":"vite build --config vite.singlefile.config.ts && cp dist-single/index.html canary.html && echo '✓ canary.html ready'","record:short":"node docs/record/record.js short","record:silent":"node docs/record/record.js --no-voice","record:extended":"node docs/record/record.js extended","test:e2e:online":"playwright test --config e2e/playwright.config.ts --project=online","test:e2e:signet":"playwright test --config e2e/playwright.config.ts e2e/protocol/signet-nostrconnect.spec.ts","test:e2e:offline":"playwright test --config e2e/playwright.config.ts --project=offline","test:e2e:protocol":"playwright test --config e2e/playwright.config.ts --project=protocol","test:e2e:live-smoke":"PLAYWRIGHT_BASE_URL=https://canary.trotters.cc playwright test --config e2e/playwright.config.ts --project=smoke","test:e2e:real-relay":"PLAYWRIGHT_BASE_URL=https://canary.trotters.cc SIGNET_BASE_URL=https://mysignet.app playwright test --config e2e/playwright.config.ts --project=real-relay"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:80947060-d39b-4da6-bee0-21682e4a01fc"}},"_resolved":"/home/runner/work/_temp/forgesworn-anvil/canary-kit-2.9.0.tgz","_integrity":"sha512-pohk+AfKkELZkdgDp0UoaiRFXp4ujTAyg4S1SXjHlH94uoKUwJzHMLVTnTC0rkJIN9jtmuZMEr0vCO+H54lSXw==","repository":{"url":"git+https://github.com/forgesworn/canary-kit.git","type":"git"},"_npmVersion":"11.6.1","description":"Deepfake-proof identity verification. Open protocol, minimal dependencies.","directories":{},"sideEffects":false,"_nodeVersion":"24.11.0","dependencies":{"nsec-tree":"^1.4.0","@scure/bip32":"^2.0.1","@scure/bip39":"^2.0.1","spoken-token":"^2.0.2","@forgesworn/shamir-words":"^1.0.2"},"publishConfig":{"provenance":true},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.19.0","vite":"^8.0.0","serve":"^14.2.6","eslint":"^10.0.3","vitest":"^4.1.0","@types/ws":"^8.18.1","@eslint/js":"^10.0.1","typescript":"^6.0.2","@types/node":"^25.6.0","geohash-kit":"^1.5.1","maplibre-gl":"^5.20.2","nostr-tools":"^2.23.3","signet-login":"^0.10.8","@noble/curves":"^2.0.1","@noble/hashes":"^2.0.1","@playwright/test":"^1.58.2","qrcode-generator":"^2.0.4","typescript-eslint":"^8.57.1","@vitest/coverage-v8":"^4.1.0","vite-plugin-singlefile":"^2.3.2"},"_npmOperationalInternal":{"tmp":"tmp/canary-kit_2.9.0_1781860674820_0.5700362271500283","host":"s3://npm-registry-packages-npm-production"}},"2.10.0":{"name":"canary-kit","version":"2.10.0","keywords":["canary","canary-kit","verification","identity","duress","safe-word","nostr","hmac","totp","deepfake","voice-clone","meshtastic","liveness","dead-mans-switch","coercion-resistance","spoken-word","bidirectional-verification","offline-first","minimal-dependencies","voice-phishing","vishing","anti-fraud","phone-verification","family-safety"],"author":{"name":"forgesworn"},"license":"MIT","_id":"canary-kit@2.10.0","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://canary.trotters.cc/","bugs":{"url":"https://github.com/forgesworn/canary-kit/issues"},"dist":{"shasum":"6feac27b6abc35f77c31408c6a695f4c35a19285","tarball":"https://registry.npmjs.org/canary-kit/-/canary-kit-2.10.0.tgz","fileCount":71,"integrity":"sha512-GY8BT8aKiPOIpaNS8/YOoCxYjPR6Yqey7qEdLN3eRz/HIFJ/jDst3C33KPOKQKkelZM55Ezvq6vnX9qKIMtZPw==","signatures":[{"sig":"MEUCIQC45eRm2TSxZv+Wuvo5P/jIj8hY1pS11Hgngd4TzdkjnAIgHecXBytMI8q5iAzVIYjNE3AGFRLQ/wALqSbGqT/F8n8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/canary-kit@2.10.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":479043},"main":"./dist/index.js","type":"module","_from":"file:/home/runner/work/_temp/forgesworn-anvil/canary-kit-2.10.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=24"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./sync":{"types":"./dist/sync.d.ts","import":"./dist/sync.js"},"./nostr":{"types":"./dist/nostr.d.ts","import":"./dist/nostr.js"},"./token":{"types":"./dist/token.d.ts","import":"./dist/token.js"},"./beacon":{"types":"./dist/beacon.d.ts","import":"./dist/beacon.js"},"./session":{"types":"./dist/session.d.ts","import":"./dist/session.js"},"./encoding":{"types":"./dist/encoding.d.ts","import":"./dist/encoding.js"},"./wordlist":{"types":"./dist/wordlist.d.ts","import":"./dist/wordlist.js"}},"funding":{"url":"lightning:thedonkey@strike.me","type":"lightning"},"scripts":{"dev":"vite --config vite.config.ts","demo":"npm run build:app && serve docs -l 8787","lint":"eslint src/","test":"vitest run","bench":"vitest bench","build":"tsc","record":"node docs/record/record.js","lint:fix":"eslint src/ --fix","test:e2e":"playwright test --config e2e/playwright.config.ts","build:app":"vite build --config vite.config.ts","typecheck":"tsc --noEmit","test:watch":"vitest","test:e2e:ui":"playwright test --config e2e/playwright.config.ts --ui","build:single":"vite build --config vite.singlefile.config.ts && cp dist-single/index.html canary.html && echo '✓ canary.html ready'","record:short":"node docs/record/record.js short","record:silent":"node docs/record/record.js --no-voice","record:extended":"node docs/record/record.js extended","test:e2e:online":"playwright test --config e2e/playwright.config.ts --project=online","test:e2e:signet":"playwright test --config e2e/playwright.config.ts e2e/protocol/signet-nostrconnect.spec.ts","test:e2e:offline":"playwright test --config e2e/playwright.config.ts --project=offline","test:e2e:protocol":"playwright test --config e2e/playwright.config.ts --project=protocol","test:e2e:live-smoke":"PLAYWRIGHT_BASE_URL=https://canary.trotters.cc playwright test --config e2e/playwright.config.ts --project=smoke","test:e2e:real-relay":"PLAYWRIGHT_BASE_URL=https://canary.trotters.cc SIGNET_BASE_URL=https://mysignet.app playwright test --config e2e/playwright.config.ts --project=real-relay"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:80947060-d39b-4da6-bee0-21682e4a01fc"}},"_resolved":"/home/runner/work/_temp/forgesworn-anvil/canary-kit-2.10.0.tgz","_integrity":"sha512-GY8BT8aKiPOIpaNS8/YOoCxYjPR6Yqey7qEdLN3eRz/HIFJ/jDst3C33KPOKQKkelZM55Ezvq6vnX9qKIMtZPw==","repository":{"url":"git+https://github.com/forgesworn/canary-kit.git","type":"git"},"_npmVersion":"11.6.1","description":"Deepfake-proof identity verification. Open protocol, minimal dependencies.","directories":{},"sideEffects":false,"_nodeVersion":"24.11.0","dependencies":{"nsec-tree":"^1.4.0","@scure/bip32":"^2.0.1","@scure/bip39":"^2.0.1","spoken-token":"^2.0.2","@forgesworn/shamir-words":"^1.0.2"},"publishConfig":{"provenance":true},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.19.0","vite":"^8.0.0","serve":"^14.2.6","eslint":"^10.0.3","vitest":"^4.1.0","@types/ws":"^8.18.1","@eslint/js":"^10.0.1","typescript":"^6.0.2","@types/node":"^25.6.0","geohash-kit":"^1.5.1","maplibre-gl":"^5.20.2","nostr-tools":"^2.23.3","signet-login":"^0.11.0","@noble/curves":"^2.0.1","@noble/hashes":"^2.0.1","@playwright/test":"^1.58.2","qrcode-generator":"^2.0.4","typescript-eslint":"^8.57.1","@vitest/coverage-v8":"^4.1.0","vite-plugin-singlefile":"^2.3.2"},"_npmOperationalInternal":{"tmp":"tmp/canary-kit_2.10.0_1781863177114_0.8834380845026089","host":"s3://npm-registry-packages-npm-production"}},"2.11.0":{"name":"canary-kit","version":"2.11.0","description":"Deepfake-proof identity verification. Open protocol, minimal dependencies.","type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","publishConfig":{"provenance":true},"sideEffects":false,"engines":{"node":">=24"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./wordlist":{"types":"./dist/wordlist.d.ts","import":"./dist/wordlist.js"},"./nostr":{"types":"./dist/nostr.d.ts","import":"./dist/nostr.js"},"./beacon":{"types":"./dist/beacon.d.ts","import":"./dist/beacon.js"},"./token":{"types":"./dist/token.d.ts","import":"./dist/token.js"},"./encoding":{"types":"./dist/encoding.d.ts","import":"./dist/encoding.js"},"./session":{"types":"./dist/session.d.ts","import":"./dist/session.js"},"./sync":{"types":"./dist/sync.d.ts","import":"./dist/sync.js"}},"scripts":{"build":"tsc","dev":"vite --config vite.config.ts","build:app":"vite build --config vite.config.ts","test":"vitest run","test:watch":"vitest","typecheck":"tsc --noEmit","lint":"eslint src/","lint:fix":"eslint src/ --fix","check:signet-login":"node tools/check-signet-login-version.mjs","check:signet-conformance":"node tools/check-signet-conformance.mjs","bench":"vitest bench","demo":"npm run build:app && serve docs -l 8787","build:single":"vite build --config vite.singlefile.config.ts && cp dist-single/index.html canary.html && echo '✓ canary.html ready'","test:e2e":"playwright test --config e2e/playwright.config.ts","test:e2e:offline":"playwright test --config e2e/playwright.config.ts --project=offline","test:e2e:online":"playwright test --config e2e/playwright.config.ts --project=online","test:e2e:protocol":"playwright test --config e2e/playwright.config.ts --project=protocol","test:e2e:signet":"playwright test --config e2e/playwright.config.ts --project=protocol e2e/protocol/signet-nostrconnect.spec.ts","test:e2e:signet:webkit":"playwright test --config e2e/playwright.config.ts --project=signet-webkit","test:e2e:live-smoke":"PLAYWRIGHT_BASE_URL=https://canary.trotters.cc playwright test --config e2e/playwright.config.ts --project=smoke","test:e2e:real-relay":"PLAYWRIGHT_BASE_URL=https://canary.trotters.cc SIGNET_BASE_URL=https://mysignet.app playwright test --config e2e/playwright.config.ts --project=real-relay","test:e2e:ui":"playwright test --config e2e/playwright.config.ts --ui","record":"node docs/record/record.js","record:short":"node docs/record/record.js short","record:extended":"node docs/record/record.js extended","record:silent":"node docs/record/record.js --no-voice"},"keywords":["canary","canary-kit","verification","identity","duress","safe-word","nostr","hmac","totp","deepfake","voice-clone","meshtastic","liveness","dead-mans-switch","coercion-resistance","spoken-word","bidirectional-verification","offline-first","minimal-dependencies","voice-phishing","vishing","anti-fraud","phone-verification","family-safety"],"author":{"name":"forgesworn"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/forgesworn/canary-kit.git"},"homepage":"https://canary.trotters.cc/","bugs":{"url":"https://github.com/forgesworn/canary-kit/issues"},"devDependencies":{"@eslint/js":"^10.0.1","@noble/curves":"^2.0.1","@noble/hashes":"^2.0.1","@playwright/test":"^1.58.2","@types/node":"^25.6.0","@types/ws":"^8.18.1","@vitest/coverage-v8":"^4.1.0","eslint":"^10.0.3","geohash-kit":"^1.5.1","maplibre-gl":"^5.20.2","nostr-tools":"^2.23.3","qrcode-generator":"^2.0.4","serve":"^14.2.6","signet-login":"^0.14.1","typescript":"^6.0.2","typescript-eslint":"^8.57.1","vite":"^8.0.0","vite-plugin-singlefile":"^2.3.2","vitest":"^4.1.0","ws":"^8.19.0"},"dependencies":{"@forgesworn/shamir-words":"^1.0.2","@scure/bip32":"^2.0.1","@scure/bip39":"^2.0.1","nsec-tree":"^1.4.0","spoken-token":"^2.1.0"},"funding":{"type":"lightning","url":"lightning:profusemeat89@walletofsatoshi.com"},"_id":"canary-kit@2.11.0","_integrity":"sha512-jKVH6O5SLz7PxbT1wl6J6nxOqHcyaKRa0/2Q9F48fpdyK10y44OYxlh9/mztrVNfjPyIL6p/ddQRt/rALjKFjg==","_resolved":"/home/runner/work/_temp/forgesworn-anvil/canary-kit-2.11.0.tgz","_from":"file:/home/runner/work/_temp/forgesworn-anvil/canary-kit-2.11.0.tgz","_nodeVersion":"24.11.0","_npmVersion":"11.6.1","dist":{"integrity":"sha512-jKVH6O5SLz7PxbT1wl6J6nxOqHcyaKRa0/2Q9F48fpdyK10y44OYxlh9/mztrVNfjPyIL6p/ddQRt/rALjKFjg==","shasum":"fb02f8cf37c231e6237d1e1b907da6274348b759","tarball":"https://registry.npmjs.org/canary-kit/-/canary-kit-2.11.0.tgz","fileCount":71,"unpackedSize":491974,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/canary-kit@2.11.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQD9cuxzb9F6Yk1HX0iAZMsYSJNyJra4yqAfu5go3pEvpwIgXGlUEEWBLSMiOIoVfpYfdJQ5Adf3LPN//gn1eub7W1M="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:80947060-d39b-4da6-bee0-21682e4a01fc"}},"directories":{},"maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/canary-kit_2.11.0_1783416932249_0.34222180794236445"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-16T15:29:46.688Z","modified":"2026-07-07T09:35:32.659Z","0.9.0":"2026-03-16T15:29:46.856Z","0.10.0":"2026-03-17T13:39:35.723Z","0.11.0":"2026-03-17T16:52:45.988Z","1.0.0":"2026-03-18T13:00:51.093Z","1.0.1":"2026-03-18T14:11:57.943Z","1.0.2":"2026-03-18T15:06:53.898Z","1.0.3":"2026-03-18T15:28:46.854Z","1.0.4":"2026-03-18T15:50:37.457Z","1.0.5":"2026-03-18T15:55:18.004Z","1.1.0":"2026-03-18T15:59:35.037Z","1.2.0":"2026-03-18T16:12:44.931Z","1.3.0":"2026-03-18T16:19:08.847Z","1.4.0":"2026-03-18T16:24:27.217Z","2.0.0":"2026-03-18T21:58:10.506Z","2.1.0":"2026-03-18T22:12:52.517Z","2.2.0":"2026-03-18T22:26:59.587Z","2.2.1":"2026-03-18T22:31:30.786Z","2.2.2":"2026-03-18T22:53:38.387Z","2.3.0":"2026-03-18T23:00:24.833Z","2.4.0":"2026-03-18T23:50:05.012Z","2.5.0":"2026-03-19T00:30:51.987Z","2.5.1":"2026-03-19T00:47:00.953Z","2.5.2":"2026-03-19T00:59:03.803Z","2.5.3":"2026-03-19T07:24:45.366Z","2.5.4":"2026-03-19T07:33:31.313Z","2.5.5":"2026-03-19T10:03:04.042Z","2.6.0":"2026-03-19T16:58:13.879Z","2.6.1":"2026-03-19T17:07:48.608Z","2.6.2":"2026-03-20T09:31:29.131Z","2.7.0":"2026-03-27T16:56:03.530Z","2.7.1":"2026-04-07T19:27:41.183Z","2.7.2":"2026-04-12T11:31:00.202Z","2.7.4":"2026-06-16T08:47:14.256Z","2.7.5":"2026-06-16T09:13:47.020Z","2.7.6":"2026-06-16T11:25:27.589Z","2.8.0":"2026-06-16T12:18:27.090Z","2.8.2":"2026-06-16T13:34:27.838Z","2.8.3":"2026-06-16T14:04:45.381Z","2.8.4":"2026-06-16T20:52:06.410Z","2.8.5":"2026-06-17T05:26:03.519Z","2.8.6":"2026-06-17T07:39:53.614Z","2.8.7":"2026-06-17T10:18:29.447Z","2.9.0":"2026-06-19T09:17:54.949Z","2.10.0":"2026-06-19T09:59:37.245Z","2.11.0":"2026-07-07T09:35:32.400Z"},"bugs":{"url":"https://github.com/forgesworn/canary-kit/issues"},"author":{"name":"forgesworn"},"license":"MIT","homepage":"https://canary.trotters.cc/","keywords":["canary","canary-kit","verification","identity","duress","safe-word","nostr","hmac","totp","deepfake","voice-clone","meshtastic","liveness","dead-mans-switch","coercion-resistance","spoken-word","bidirectional-verification","offline-first","minimal-dependencies","voice-phishing","vishing","anti-fraud","phone-verification","family-safety"],"repository":{"type":"git","url":"git+https://github.com/forgesworn/canary-kit.git"},"description":"Deepfake-proof identity verification. Open protocol, minimal dependencies.","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"readme":"# canary-kit\n\n**Nostr:** [`npub1mgvlrnf5hm9yf0n5mf9nqmvarhvxkc6remu5ec3vf8r0txqkuk7su0e7q2`](https://njump.me/npub1mgvlrnf5hm9yf0n5mf9nqmvarhvxkc6remu5ec3vf8r0txqkuk7su0e7q2)\n\n> Deepfake-proof identity verification. Open protocol, minimal dependencies.\n\n[![npm](https://img.shields.io/npm/v/canary-kit)](https://www.npmjs.com/package/canary-kit)\n[![CI](https://github.com/forgesworn/canary-kit/actions/workflows/ci.yml/badge.svg)](https://github.com/forgesworn/canary-kit/actions)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)\n[![TypeScript](https://img.shields.io/badge/TypeScript-native-blue)](https://www.typescriptlang.org/)\n[![Coverage](https://img.shields.io/badge/coverage-95%25-brightgreen)](vitest.config.ts)\n[![GitHub Sponsors](https://img.shields.io/github/sponsors/TheCryptoDonkey?logo=githubsponsors&color=ea4aaa&label=Sponsor)](https://github.com/sponsors/TheCryptoDonkey)\n\n**[Interactive Demo](https://canary.trotters.cc/)** · [Protocol Spec](CANARY.md) · [Nostr Binding](NIP-CANARY.md) · [Integration Guide](INTEGRATION.md) · [Groups Protocol](GROUPS.md) · [Nostr Transport](NIP-XX.md) · [Threat Model](THREAT-MODEL.md) · [Regulatory](REGULATORY.md)\n\n## Why Now\n\nRegulators and criminals arrived at the same inflection point simultaneously. In\nMarch 2023 the UN Office on Drugs and Crime formally linked AI synthetic voice to\norganised criminal networks operating cross-border fraud at institutional scale.\nVoice cloning tools are now available as a service for under $400/month; vishing\nsurged 442% in 2025. The same week, the UAE Central Bank set a 31 March 2026\ndeadline banning SMS OTP across all licensed financial institutions — the first\nnational regulator to mandate its replacement. India's RBI follows on 1 April 2026\nwith mandatory two-factor authentication for all digital payment transactions. The\nEU AI Act's deepfake transparency obligation (Article 50) takes effect in August\n2026; EUDI Wallets must be available across all 27 Member States by December 2026.\nFCA Strong Customer Authentication technical standards were updated in March 2026.\n\nCANARY is positioned where these pressures converge: the voice channel, where\nauthentication is weakest and the regulatory gap is largest. For a detailed mapping\nof CANARY's security properties against each regulation, see\n[REGULATORY.md](REGULATORY.md).\n\nThe full verification stack covers four caller scenarios: known person, known\ninstitution (CANARY handles this), unknown person, and unknown institution\ncold-calling — the last via [Signet](https://github.com/forgesworn/signet)\ncold-call verification (forthcoming). Deepfake labelling tools and CANARY are\ncomplementary: one labels AI-generated content after the fact; CANARY verifies\nthe caller's identity in real time at the point of interaction.\n\n## The Problem\n\nVoice phishing surged 442% in 2025. AI can clone a voice from three seconds of\naudio. The tools that were supposed to protect us are failing:\n\n- **Security questions** are one-directional and socially engineerable\n- **Voice biometrics** — 91% of US banks are reconsidering after deepfake attacks\n- **TOTP codes** prove you to a server, but never prove the server to you\n- **\"Family safe words\"** are static, never rotate, and have no duress signalling\n\nCANARY is the first protocol that combines **bidirectional verification** (both\nsides prove identity), **coercion resistance** (duress tokens), and **spoken-word\noutput** — three properties that have never existed together in a standard.\n\nIt works because cloning a voice doesn't help you derive the right word. Only\nknowledge of the shared secret does.\n\n## Quick Start\n\n```bash\nnpm install canary-kit\n```\n\n### Phone Verification (Insurance, Banking)\n\n```typescript\nimport { createSession } from 'canary-kit/session'\n\nconst session = createSession({\n  secret: sharedSeed,\n  namespace: 'aviva',\n  roles: ['caller', 'agent'],\n  myRole: 'agent',\n  preset: 'call',\n})\n\nsession.myToken()        // \"choose\" — what I speak\nsession.theirToken()     // \"bid\" — what I expect to hear\nsession.verify('bid')    // { status: 'valid' }\n```\n\n### Family / Team Verification\n\n```typescript\nimport { createGroup, getCurrentWord, verifyWord, getCounter } from 'canary-kit'\n\nconst group = createGroup({\n  name: 'Family',\n  members: [alicePubkey, bobPubkey],\n  preset: 'family',\n})\n\ngetCurrentWord(group)  // \"falcon\"\n```\n\n## Use Cases\n\n| Use case | Preset | Rotation | What it replaces |\n|----------|--------|----------|------------------|\n| Insurance phone calls | `call` | 30 seconds | Security questions |\n| Banking phone calls | `call` | 30 seconds | Voice biometrics, callbacks |\n| Rideshare/delivery handoff | `handoff` | Single-use | Random PINs |\n| Family safety | `family` | 7 days | Static safe words |\n| Journalism / activism | `field-ops` | 24 hours | Nothing (no existing standard) |\n| Enterprise incident response | `enterprise` | 48 hours | Challenge-response over email |\n\n## Why Not Just...\n\n| Solution | Limitation CANARY solves |\n|----------|------------------------|\n| Security questions | One-directional. Socially engineerable. No rotation. |\n| Voice biometrics | Defeated by AI voice cloning. One-directional. |\n| TOTP (Google Auth) | Machine-readable digits, not spoken words. No duress. One-directional. |\n| Callback numbers | Slow. Doesn't prove the agent's identity. |\n| BIP-39 wordlist | No verification protocol. No rotation. No duress. |\n| \"Family safe word\" | Static. No rotation. No duress. No protocol. |\n| **CANARY** | **Bidirectional. Deepfake-proof. Duress-aware. Rotating. Offline. Open.** |\n\n## Why Canary\n\n**Bidirectional.** Both sides prove identity. The caller proves they know the secret, and the agent proves it back. Neither can impersonate the other.\n\n**Built on proven primitives.** CANARY extends the HMAC-counter pattern from HOTP (RFC 4226) and TOTP (RFC 6238) to human-to-human spoken verification, adding duress signalling and coercion resistance.\n\n**Offline-first.** Words are derived locally from a shared seed and a time-based counter. No network is required after initial setup.\n\n**Duress-aware.** Every party has a personal duress word distinct from the verification word. Speaking it silently alerts the system while giving the attacker plausible deniability.\n\n**Automatic rotation.** Configurable intervals — 30 seconds for phone calls, 7 days for family groups.\n\n**Minimal dependencies.** Core crypto is pure JavaScript. Only `@scure/bip32` and `@scure/bip39` for mnemonic key recovery. Requires `globalThis.crypto` (Web Crypto API): all browsers, Node.js 24+, Deno, and edge runtimes.\n\n**Protocol-grade.** Formal specification with published test vectors and a curated 2048-word spoken-clarity wordlist.\n\n## Compatibility\n\n| Runtime | Version | Notes |\n|---------|---------|-------|\n| Node.js | 24+ | Full support (`globalThis.crypto` required) |\n| Deno | 1.x+ | Full support |\n| Bun | 1.x+ | Full support |\n| Browsers | All modern | Chrome, Firefox, Safari, Edge |\n| Cloudflare Workers | Yes | Web Crypto API available |\n| React Native | Via polyfill | Needs `crypto.subtle` polyfill |\n\nESM-only. Eight subpath exports for tree-shaking:\n\n```typescript\nimport { createSession } from 'canary-kit/session'    // just sessions\nimport { deriveToken } from 'canary-kit/token'         // just derivation\nimport { encodeAsWords } from 'canary-kit/encoding'    // just encoding\nimport { WORDLIST } from 'canary-kit/wordlist'          // just the wordlist\nimport { buildGroupStateEvent } from 'canary-kit/nostr' // just Nostr\nimport { encryptBeacon } from 'canary-kit/beacon'      // just beacons\nimport { applySyncMessage } from 'canary-kit/sync'     // just sync protocol\n```\n\n## Security\n\n- **Minimal runtime dependencies** — only `@scure/bip32` and `@scure/bip39` for mnemonic key recovery; core crypto is pure JS\n- **Automated publishing** — GitHub Actions with OIDC trusted publishing, no stored tokens\n- **Provenance signed** — npm provenance attestation enabled\n- **Protocol-grade test vectors** — frozen canonical vectors in both CANARY.md and NIP-CANARY.md; any conformant implementation must produce identical results\n- **Timing-safe byte compare** — `timingSafeEqual()` utility provided for constant-time byte operations\n- **Bounded tolerance** — `MAX_TOLERANCE` cap prevents pathological iteration\n- **Candidate-risk estimator** — `estimateCanaryVerificationRisk()` models accepted candidates for roster size, tolerance, and token encoding\n\nSee [SECURITY.md](SECURITY.md) for vulnerability disclosure and known limitations. See [CANARY.md](CANARY.md) for the full security analysis.\n\n## API\n\n| Subpath export | Key functions |\n|---|---|\n| `canary-kit/session` | `createSession`, `generateSeed`, `deriveSeed` |\n| `canary-kit/token` | `deriveToken`, `verifyToken`, `deriveDuressToken`, `deriveLivenessToken`, `estimateCanaryVerificationRisk` |\n| `canary-kit/encoding` | `encodeAsWords`, `encodeAsPin`, `encodeAsHex` |\n| `canary-kit` | `createGroup`, `getCurrentWord`, `verifyWord`, `addMember`, `reseed` |\n| `canary-kit/nostr` | `buildGroupStateEvent`, `buildSignalEvent`, `buildStoredSignalEvent`, `buildRumourEvent` |\n| `canary-kit/beacon` | `encryptBeacon`, `decryptBeacon`, `buildDuressAlert` |\n| `canary-kit/sync` | `applySyncMessage`, `encodeSyncMessage`, `deriveGroupKey` |\n| `canary-kit/wordlist` | `WORDLIST`, `getWord`, `indexOf` |\n\nFull API documentation with signatures, types, and presets: **[API.md](API.md)**\n\n## Protocol\n\nThe full protocol specification is in [CANARY.md](CANARY.md). The Nostr binding is in [NIP-CANARY.md](NIP-CANARY.md). The integration guide for finance/enterprise is in [INTEGRATION.md](INTEGRATION.md).\n\n| Event | Kind | Type |\n|---|---|---|\n| Group state / stored signals | `30078` | Parameterised replaceable |\n| Real-time signals | `20078` | Ephemeral |\n| Seed distribution / member updates | `14` → `1059` | NIP-17 gift wrap (kind 14 rumour sealed + wrapped) |\n\nContent is encrypted with **NIP-44**. Group state events use the `ssg/` d-tag namespace. Seed distribution and member updates use **NIP-17** gift wrapping (kind 14 rumour → kind 13 seal → kind 1059 gift wrap). Events may carry a **NIP-40** `expiration` tag.\n\n## For AI Assistants\n\n- [llms.txt](llms.txt) — concise API summary\n- [llms-full.txt](llms-full.txt) — complete reference with all type signatures\n\n## Support\n\nFor issues and feature requests, see [GitHub Issues](https://github.com/forgesworn/canary-kit/issues).\n\nIf you find canary-kit useful, consider sending a tip:\n\n- **Lightning:** `profusemeat89@walletofsatoshi.com`\n- **Nostr zaps:** `npub1mgvlrnf5hm9yf0n5mf9nqmvarhvxkc6remu5ec3vf8r0txqkuk7su0e7q2`\n\n## Part of the ForgeSworn Toolkit\n\n[ForgeSworn](https://forgesworn.dev) builds open-source cryptographic identity, payments, and coordination tools for Nostr.\n\n| Library | What it does |\n|---------|-------------|\n| [nsec-tree](https://github.com/forgesworn/nsec-tree) | Deterministic sub-identity derivation |\n| [ring-sig](https://github.com/forgesworn/ring-sig) | SAG/LSAG ring signatures on secp256k1 |\n| [range-proof](https://github.com/forgesworn/range-proof) | Pedersen commitment range proofs |\n| [canary-kit](https://github.com/forgesworn/canary-kit) | Coercion-resistant spoken verification |\n| [spoken-token](https://github.com/forgesworn/spoken-token) | Human-speakable verification tokens |\n| [toll-booth](https://github.com/forgesworn/toll-booth) | L402 payment middleware |\n| [geohash-kit](https://github.com/forgesworn/geohash-kit) | Geohash toolkit with polygon coverage |\n| [nostr-attestations](https://github.com/forgesworn/nostr-attestations) | NIP-VA verifiable attestations |\n| [dominion](https://github.com/forgesworn/dominion) | Epoch-based encrypted access control |\n| [nostr-veil](https://github.com/forgesworn/nostr-veil) | Privacy-preserving Web of Trust |\n\n## Licence\n\nMIT\n","readmeFilename":"README.md"}