{"_id":"iobroker.hannah","_rev":"96-86468d02b16f037c4e49ed86a016f4d5","name":"iobroker.hannah","dist-tags":{"old":"0.31.2","latest":"1.6.0"},"versions":{"0.0.1":{"name":"iobroker.hannah","version":"0.0.1","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@0.0.1","maintainers":[{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"f8e73c58e24f5d6d1c48121a10a164589539a07d","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-0.0.1.tgz","fileCount":19,"integrity":"sha512-5LToPvWlsoEMuOefviesjr8PmntfWMAH5dysvnqfKPp8hH0TplvAM9Htk8wzB4cZHTRr/b+ieZCV8a4L7BJqxQ==","signatures":[{"sig":"MEYCIQDFsygDg5L6sLeplrjoB1KIUvvDZLwx0dkeHlwp/L3EzQIhAIJaST/dGfgYjUSI+tZWzx6tvyEX1mXmzW3bXA5VNzZ5","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":24640546},"main":"build/main.js","engines":{"node":">= 20"},"scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all && node -e \"require('fs').mkdirSync('build/proto',{recursive:true});require('fs').copyFileSync('src/proto/hannah.proto','build/proto/hannah.proto')\"","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"m1kad0","email":"leonie+npm@sgessinger.de"},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.11.1","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"25.8.2","dependencies":{"@grpc/grpc-js":"^1.12.0","@grpc/proto-loader":"^0.7.15","@iobroker/adapter-core":"^3.3.2"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^18.3.1","typescript":"~5.9.3","@types/node":"^20.19.39","@types/react":"^18.3.28","@mui/material":"^6.5.0","@emotion/react":"^11.14.0","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.1.1","@tsconfig/node20":"^20.1.9","@types/react-dom":"^18.3.7","@iobroker/testing":"^5.2.2","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@iobroker/eslint-config":"^2.2.0","@alcalzone/release-script":"^5.1.1","@iobroker/adapter-react-v5":"^8.2.2","@alcalzone/release-script-plugin-license":"^5.1.1","@alcalzone/release-script-plugin-iobroker":"^5.1.2","@alcalzone/release-script-plugin-manual-review":"^5.1.1"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_0.0.1_1777315188398_0.4912785906156649","host":"s3://npm-registry-packages-npm-production"}},"0.0.2":{"name":"iobroker.hannah","version":"0.0.2","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@0.0.2","maintainers":[{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"cc46e6af4656f176854f367d79f2886bfe0dd40f","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-0.0.2.tgz","fileCount":19,"integrity":"sha512-xpS19gYdOHE8MKmMLfhKncOdLBkYTlac0AeqA6xRAkNnX0PArqz2FwY7pVBp0/c0z9wWmJMlXVaCYC07jzur9A==","signatures":[{"sig":"MEUCIQDYjL449EG0fg6LrTM1wblkJ3KabDL69C6pTlPthvHjyAIgUg8VZwdZlPWKEL+FxC25CI6h2YBADIlv5pFaq2gfwMs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iobroker.hannah@0.0.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":24654700},"main":"build/main.js","engines":{"node":">= 20"},"gitHead":"7c6d75d55c10acc6837ad8a4510564d509aa65fc","scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all && node -e \"require('fs').mkdirSync('build/proto',{recursive:true});require('fs').copyFileSync('src/proto/hannah.proto','build/proto/hannah.proto')\"","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:78bd7777-7b60-4a83-a038-49a20401c6b2"}},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.13.0","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@grpc/grpc-js":"^1.12.0","@grpc/proto-loader":"^0.7.15","@iobroker/adapter-core":"^3.3.2"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^18.3.1","typescript":"~5.9.3","@types/node":"^20.19.39","@types/react":"^18.3.28","@mui/material":"^6.5.0","@emotion/react":"^11.14.0","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.1.1","@tsconfig/node20":"^20.1.9","@types/react-dom":"^18.3.7","@iobroker/testing":"^5.2.2","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@iobroker/eslint-config":"^2.2.0","@alcalzone/release-script":"^5.1.1","@iobroker/adapter-react-v5":"^8.2.2","@alcalzone/release-script-plugin-license":"^5.1.1","@alcalzone/release-script-plugin-iobroker":"^5.1.2","@alcalzone/release-script-plugin-manual-review":"^5.1.1"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_0.0.2_1777397085026_0.36868856689619856","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"iobroker.hannah","version":"0.1.0","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@0.1.0","maintainers":[{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"692e97f5f97d6809ec51cfb5481d00ff940e742d","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-0.1.0.tgz","fileCount":21,"integrity":"sha512-4cCzwiIJXpSvXJ+UynRPnQFPRMeOylsIPSkRRCHRmp/VsGig33ewg4fH1vw6K7TTt5a3yasL1SKkznJOsFdgyw==","signatures":[{"sig":"MEYCIQCMRpweroSoM3kA3FoGzH6/OHbAo0o3BsGX8vcg/iP4ZAIhAO0aZluSwd8jeGi71Cc+OUw/JXADDvsvOmMZwK1XLLZg","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iobroker.hannah@0.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":24693902},"main":"build/main.js","engines":{"node":">= 20"},"gitHead":"ec9653dc93d6179a3aa859e48cf2b68863eab4a6","scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all && node -e \"require('fs').mkdirSync('build/proto',{recursive:true});require('fs').copyFileSync('src/proto/hannah.proto','build/proto/hannah.proto')\"","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","prepack":"npm run build","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:78bd7777-7b60-4a83-a038-49a20401c6b2"}},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.13.0","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@grpc/grpc-js":"^1.12.0","@grpc/proto-loader":"^0.7.15","@iobroker/adapter-core":"^3.3.2"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^18.3.1","typescript":"~5.9.3","@types/node":"^20.19.39","@types/react":"^18.3.28","@mui/material":"^6.5.0","@emotion/react":"^11.14.0","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.1.1","@tsconfig/node20":"^20.1.9","@types/react-dom":"^18.3.7","@iobroker/testing":"^5.2.2","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@iobroker/eslint-config":"^2.2.0","@alcalzone/release-script":"^5.1.1","@iobroker/adapter-react-v5":"^8.2.2","@alcalzone/release-script-plugin-license":"^5.1.1","@alcalzone/release-script-plugin-iobroker":"^5.1.2","@alcalzone/release-script-plugin-manual-review":"^5.1.1"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_0.1.0_1777557255391_0.7971921925933441","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"iobroker.hannah","version":"0.2.0","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@0.2.0","maintainers":[{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"9ba2ea8e77a0a2a493417b3e7da3be6daff749c8","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-0.2.0.tgz","fileCount":24,"integrity":"sha512-UnD3fbji8HdPxUo0q3HtEiN308j3Gjl3FsYPYg8bAvPiP/CbtTRJj3bAVnHUISn2/oNaJYnHFbEsYIkolAzeew==","signatures":[{"sig":"MEUCICQbCCLv8wES/sS1kAiuaeCR5pl7oBWW3BFXk1V1Z0kJAiEAmSUUh1351QRP0TkzgFRL7R3qRn/QgEHtNhMtWgcvhkQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iobroker.hannah@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":24733305},"main":"build/main.js","engines":{"node":">= 20"},"gitHead":"39b5f228ca9d74d21a4382c3595b80fc1db09e89","scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all && node -e \"require('fs').mkdirSync('build/proto',{recursive:true});require('fs').copyFileSync('src/proto/hannah.proto','build/proto/hannah.proto')\"","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","prepublishOnly":"npm run build","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:78bd7777-7b60-4a83-a038-49a20401c6b2"}},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.13.0","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@grpc/grpc-js":"^1.12.0","@grpc/proto-loader":"^0.7.15","@iobroker/adapter-core":"^3.3.2"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^18.3.1","typescript":"~5.9.3","@types/node":"^20.19.39","@types/react":"^18.3.28","@mui/material":"^6.5.0","@emotion/react":"^11.14.0","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.1.1","@tsconfig/node20":"^20.1.9","@types/react-dom":"^18.3.7","@iobroker/testing":"^5.2.2","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@iobroker/eslint-config":"^2.2.0","@alcalzone/release-script":"^5.1.1","@iobroker/adapter-react-v5":"^8.2.2","@alcalzone/release-script-plugin-license":"^5.1.1","@alcalzone/release-script-plugin-iobroker":"^5.1.2","@alcalzone/release-script-plugin-manual-review":"^5.1.1"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_0.2.0_1777575016482_0.3622012534993029","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"iobroker.hannah","version":"0.2.1","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@0.2.1","maintainers":[{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"86204566f68afe2ac3a66b579ff670adc036e286","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-0.2.1.tgz","fileCount":24,"integrity":"sha512-x1fSP0HJ5q/Q6kxKdzoIpXciQrTqSzyza0tSQKxhR32d4fEA2Czjt5cX6VU8aKBIegaOCG8BHCq5QeCkRg2s2g==","signatures":[{"sig":"MEUCID5l5yzmVSxqhXSuzinVnk0SK1+j4fls5uyfjDAPbmiXAiEAlBt65K/WDN0PmOkWGMYik7CbrP2RFx/Ys15k7AC+Ju4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iobroker.hannah@0.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":24737689},"main":"build/main.js","engines":{"node":">= 20"},"gitHead":"c11e0b642c54b032a7ce75978fb4ab525fdae17d","scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all && node -e \"require('fs').mkdirSync('build/proto',{recursive:true});require('fs').copyFileSync('src/proto/hannah.proto','build/proto/hannah.proto')\"","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","prepublishOnly":"npm run build","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:78bd7777-7b60-4a83-a038-49a20401c6b2"}},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.13.0","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@grpc/grpc-js":"^1.12.0","@grpc/proto-loader":"^0.7.15","@iobroker/adapter-core":"^3.3.2"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^18.3.1","typescript":"~5.9.3","@types/node":"^20.19.39","@types/react":"^18.3.28","@mui/material":"^6.5.0","@emotion/react":"^11.14.0","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.1.1","@tsconfig/node20":"^20.1.9","@types/react-dom":"^18.3.7","@iobroker/testing":"^5.2.2","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@iobroker/eslint-config":"^2.2.0","@alcalzone/release-script":"^5.1.1","@iobroker/adapter-react-v5":"^8.2.2","@alcalzone/release-script-plugin-license":"^5.1.1","@alcalzone/release-script-plugin-iobroker":"^5.1.2","@alcalzone/release-script-plugin-manual-review":"^5.1.1"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_0.2.1_1777643170870_0.6917374131826262","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"iobroker.hannah","version":"0.3.0","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@0.3.0","maintainers":[{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"06ba424833defb83ed319bb443c5d0fd70f9dd51","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-0.3.0.tgz","fileCount":24,"integrity":"sha512-LV0fawQj80foFkTC07uphk1rsCow3D3IlLMKMmw0FHyWCG2733aq1YJS4fO2A+WOZacdxCeEgokdVqV5+XjmiA==","signatures":[{"sig":"MEUCIQDpEdtWU97/DsKy+hOHIUdCbxv0G3anpoMpzP5PlgenwwIgOw2k1IzN9bT3tEwMa01WgjeufxeKeSXyTmsl7tyudkQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iobroker.hannah@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":24762155},"main":"build/main.js","engines":{"node":">= 20"},"gitHead":"d6f83de86bdb5b0b3afeec0edfa9cd366fda357a","scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all && node -e \"require('fs').mkdirSync('build/proto',{recursive:true});require('fs').copyFileSync('src/proto/hannah.proto','build/proto/hannah.proto')\"","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","prepublishOnly":"npm run build","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:78bd7777-7b60-4a83-a038-49a20401c6b2"}},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.13.0","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@grpc/grpc-js":"^1.12.0","@grpc/proto-loader":"^0.7.15","@iobroker/adapter-core":"^3.3.2"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^18.3.1","typescript":"~5.9.3","@types/node":"^20.19.39","@types/react":"^18.3.28","@mui/material":"^6.5.0","@emotion/react":"^11.14.0","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.1.1","@tsconfig/node20":"^20.1.9","@types/react-dom":"^18.3.7","@iobroker/testing":"^5.2.2","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@iobroker/eslint-config":"^2.2.0","@alcalzone/release-script":"^5.1.1","@iobroker/adapter-react-v5":"^8.2.2","@alcalzone/release-script-plugin-license":"^5.1.1","@alcalzone/release-script-plugin-iobroker":"^5.1.2","@alcalzone/release-script-plugin-manual-review":"^5.1.1"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_0.3.0_1777748721347_0.7960435639720209","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"iobroker.hannah","version":"0.3.1","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@0.3.1","maintainers":[{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"2199d7c29008f35d84a73dcb04effe73389ac2c4","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-0.3.1.tgz","fileCount":24,"integrity":"sha512-rNzo7sjxRye4NUIECRCmYsvlfzZkXYPTYg9KAWjRh+haDWJiWyxLlcbgUftYmysJ/g/+egeI6ORQ/vrE8qBVvg==","signatures":[{"sig":"MEYCIQCENYYDzdXjU9jpZSrHBr81aRaU2yVtKfUFe72g2C5SigIhAPfq2yMaD0D5HH++mNAGvLcHK0kh8M0bbwTs4TnAx594","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iobroker.hannah@0.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":24763513},"main":"build/main.js","engines":{"node":">= 20"},"gitHead":"ad647e159ecb180555b53c5f30552158a0068513","scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all && node -e \"require('fs').mkdirSync('build/proto',{recursive:true});require('fs').copyFileSync('src/proto/hannah.proto','build/proto/hannah.proto')\"","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","prepublishOnly":"npm run build","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:78bd7777-7b60-4a83-a038-49a20401c6b2"}},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.13.0","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@grpc/grpc-js":"^1.12.0","@grpc/proto-loader":"^0.7.15","@iobroker/adapter-core":"^3.3.2"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^18.3.1","typescript":"~5.9.3","@types/node":"^20.19.39","@types/react":"^18.3.28","@mui/material":"^6.5.0","@emotion/react":"^11.14.0","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.1.1","@tsconfig/node20":"^20.1.9","@types/react-dom":"^18.3.7","@iobroker/testing":"^5.2.2","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@iobroker/eslint-config":"^2.2.0","@alcalzone/release-script":"^5.1.1","@iobroker/adapter-react-v5":"^8.2.2","@alcalzone/release-script-plugin-license":"^5.1.1","@alcalzone/release-script-plugin-iobroker":"^5.1.2","@alcalzone/release-script-plugin-manual-review":"^5.1.1"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_0.3.1_1777753731175_0.8165281750702245","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"iobroker.hannah","version":"0.3.2","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@0.3.2","maintainers":[{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"e150437dccc92163a212768f0ac8454539415627","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-0.3.2.tgz","fileCount":24,"integrity":"sha512-9VPFGR/lzYuBsIJieMPGKT/fq4lq0m5NdZnGy1+yx0pNvOi8X/M0pgsE+IyY60fssIewsOdcndWhoEbAumcB5A==","signatures":[{"sig":"MEUCIBqd9k1mCO+Gmj0vX8b5r6dkgskoLbYnX9c4dvS2bM+/AiEAv8bvma7s8X0gS/4WHIp3csLob1rU8yel2dr7VOz3hV8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iobroker.hannah@0.3.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":24765163},"main":"build/main.js","engines":{"node":">= 20"},"gitHead":"80487da0957267455f78e3b4a9e5c92e4e39b521","scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all && node -e \"require('fs').mkdirSync('build/proto',{recursive:true});require('fs').copyFileSync('src/proto/hannah.proto','build/proto/hannah.proto')\"","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","prepublishOnly":"npm run build","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:78bd7777-7b60-4a83-a038-49a20401c6b2"}},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.13.0","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@grpc/grpc-js":"^1.12.0","@grpc/proto-loader":"^0.7.15","@iobroker/adapter-core":"^3.3.2"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^18.3.1","typescript":"~5.9.3","@types/node":"^20.19.39","@types/react":"^18.3.28","@mui/material":"^6.5.0","@emotion/react":"^11.14.0","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.1.1","@tsconfig/node20":"^20.1.9","@types/react-dom":"^18.3.7","@iobroker/testing":"^5.2.2","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@iobroker/eslint-config":"^2.2.0","@alcalzone/release-script":"^5.1.1","@iobroker/adapter-react-v5":"^8.2.2","@alcalzone/release-script-plugin-license":"^5.1.1","@alcalzone/release-script-plugin-iobroker":"^5.1.2","@alcalzone/release-script-plugin-manual-review":"^5.1.1"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_0.3.2_1777773616789_0.10454498637760334","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"iobroker.hannah","version":"0.4.0","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@0.4.0","maintainers":[{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"39cae6a94275027287960a2419779859bcd96d43","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-0.4.0.tgz","fileCount":24,"integrity":"sha512-ca4Sxje7A7Mm82gXVdXW1fRIC9QnZlTEzg3+YFvrAOh5NwQRfFk1IQ/kbsukSnWKVkTky8Qnaor3inwpb5KCyw==","signatures":[{"sig":"MEUCIE1Bt+x5J4oD7qr0wxG7W1qCcIWBzL9RggT7L9LliZV9AiEAx6eJS/fuwBdYFVyIKCPB5bveEYy4vba6VMFWRUnIviA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iobroker.hannah@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":24798244},"main":"build/main.js","engines":{"node":">= 20"},"gitHead":"f98f08e5dee5462628a756270e105fad55bea0e1","scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all && node -e \"require('fs').mkdirSync('build/proto',{recursive:true});require('fs').copyFileSync('src/proto/hannah.proto','build/proto/hannah.proto')\"","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","prepublishOnly":"npm run build","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:78bd7777-7b60-4a83-a038-49a20401c6b2"}},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.13.0","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@grpc/grpc-js":"^1.12.0","@grpc/proto-loader":"^0.7.15","@iobroker/adapter-core":"^3.3.2"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^18.3.1","typescript":"~5.9.3","@types/node":"^20.19.39","@types/react":"^18.3.28","@mui/material":"^6.5.0","@emotion/react":"^11.14.0","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.1.1","@tsconfig/node20":"^20.1.9","@types/react-dom":"^18.3.7","@iobroker/testing":"^5.2.2","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@iobroker/eslint-config":"^2.2.0","@alcalzone/release-script":"^5.1.1","@iobroker/adapter-react-v5":"^8.2.2","@alcalzone/release-script-plugin-license":"^5.1.1","@alcalzone/release-script-plugin-iobroker":"^5.1.2","@alcalzone/release-script-plugin-manual-review":"^5.1.1"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_0.4.0_1777838258472_0.8182159630775456","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"iobroker.hannah","version":"0.4.1","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@0.4.1","maintainers":[{"name":"bluefox","email":"dogafox@gmail.com"},{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"d0a94a055cf45c1dce08556ed7fc76808633988e","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-0.4.1.tgz","fileCount":24,"integrity":"sha512-DI+K1tIJfnAh8ICitRRqbAwrELV4YUqUPrV7ZlbG8uXld2hWS5Idr3KDQvW6yOG8YoaddEdG/EVooY8NMQbnzQ==","signatures":[{"sig":"MEQCIBkB+xR159ZXMUTTVcTgu2h6rmUplR74rzsefNz7Gr1AAiBBZNNF1kIX6bb4i4s1ieaFv4zkIOOL+j1rXrJGSy+iHQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iobroker.hannah@0.4.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":24789023},"main":"build/main.js","engines":{"node":">= 20"},"gitHead":"ec38ff697005b3a316093337b14823b233a08055","scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all && node -e \"require('fs').mkdirSync('build/proto',{recursive:true});require('fs').copyFileSync('src/proto/hannah.proto','build/proto/hannah.proto')\"","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","prepack":"npm run build","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","verify:package":"node scripts/verify-package-contents.mjs","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:78bd7777-7b60-4a83-a038-49a20401c6b2"}},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.13.0","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@grpc/grpc-js":"^1.12.0","@grpc/proto-loader":"^0.8.0","@iobroker/adapter-core":"^3.3.2"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^18.3.1","typescript":"~6.0.3","@types/node":"^20.19.39","@types/react":"^18.3.28","@mui/material":"^6.5.0","@emotion/react":"^11.14.0","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.1.1","@tsconfig/node20":"^20.1.9","@types/react-dom":"^18.3.7","@iobroker/testing":"^5.2.2","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@iobroker/eslint-config":"^2.2.0","@alcalzone/release-script":"^5.1.1","@iobroker/adapter-react-v5":"^8.2.2","@alcalzone/release-script-plugin-license":"^5.1.1","@alcalzone/release-script-plugin-iobroker":"^5.1.2","@alcalzone/release-script-plugin-manual-review":"^5.1.1"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_0.4.1_1777897769750_0.45711152819549805","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"iobroker.hannah","version":"0.4.2","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@0.4.2","maintainers":[{"name":"bluefox","email":"dogafox@gmail.com"},{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"d94dde1c12e60be39020f45b0215ba7b5eaa6f57","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-0.4.2.tgz","fileCount":24,"integrity":"sha512-Ntx6etoX5gLO/HxFfbKvlUFLGVAQQJ0EYLaXbBm1Diatg9pAKqS7LVl675PSSItb1NGispv/89HRtC4mUxrDtQ==","signatures":[{"sig":"MEQCIHBVYlJcHotNjeiSGm3s6i8kd6uLzOwU30kLRNKphDfqAiAQK3CAUhbnQHcxs12bpDswcxED2u4cKnR50l00ABQc+w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iobroker.hannah@0.4.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":24777846},"main":"build/main.js","engines":{"node":">= 20"},"gitHead":"b0b3f14fdc18e9e06d8c873e89e15c9502354ff5","scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all && node -e \"require('fs').mkdirSync('build/proto',{recursive:true});require('fs').copyFileSync('src/proto/hannah.proto','build/proto/hannah.proto')\"","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","prepack":"npm run build","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","verify:package":"node scripts/verify-package-contents.mjs","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:78bd7777-7b60-4a83-a038-49a20401c6b2"}},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.13.0","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@grpc/grpc-js":"^1.12.0","@grpc/proto-loader":"^0.8.0","@iobroker/adapter-core":"^3.3.2"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^18.3.1","typescript":"~6.0.3","@types/node":"^20.19.39","@types/react":"^18.3.28","@mui/material":"^6.5.0","@emotion/react":"^11.14.0","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.1.1","@tsconfig/node20":"^20.1.9","@types/react-dom":"^18.3.7","@iobroker/testing":"^5.2.2","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@iobroker/eslint-config":"^2.2.0","@alcalzone/release-script":"^5.1.1","@iobroker/adapter-react-v5":"^8.2.2","@alcalzone/release-script-plugin-license":"^5.1.1","@alcalzone/release-script-plugin-iobroker":"^5.1.2","@alcalzone/release-script-plugin-manual-review":"^5.1.1"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_0.4.2_1777907332001_0.41538927908890444","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"iobroker.hannah","version":"0.5.0","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@0.5.0","maintainers":[{"name":"bluefox","email":"dogafox@gmail.com"},{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"4ab69bc2efd26aae16971347b23b353390205051","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-0.5.0.tgz","fileCount":24,"integrity":"sha512-WF2YgBRUeJQTY505+s4pf8lrMqJLaQwpihs5tTJgQ1dMdl3EIP6KGt+iTSA3kDchAZR3t2OOiyx0nehFoAeDUA==","signatures":[{"sig":"MEUCIQCGV/Y3fj9w9vknNqs+hf+hwJUzAaWEaRDHsUWCjDY2ywIgJTZOSrcVfUYBNuKnOitJdfftVIgPAggeepqc7t2/qVY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iobroker.hannah@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":24785995},"main":"build/main.js","engines":{"node":">= 20"},"gitHead":"5da69bcde17e2a123bdafab9f110e99e5dc92654","scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all && node -e \"require('fs').mkdirSync('build/proto',{recursive:true});require('fs').copyFileSync('src/proto/hannah.proto','build/proto/hannah.proto')\"","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","prepack":"npm run build","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","verify:package":"node scripts/verify-package-contents.mjs","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:78bd7777-7b60-4a83-a038-49a20401c6b2"}},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.14.0","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@grpc/grpc-js":"^1.12.0","@grpc/proto-loader":"^0.8.0","@iobroker/adapter-core":"^3.3.2"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^18.3.1","typescript":"~6.0.3","@types/node":"^20.19.39","@types/react":"^18.3.28","@mui/material":"^6.5.0","@emotion/react":"^11.14.0","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.1.1","@tsconfig/node20":"^20.1.9","@types/react-dom":"^18.3.7","@iobroker/testing":"^5.2.2","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@iobroker/eslint-config":"^2.2.0","@alcalzone/release-script":"^5.1.1","@iobroker/adapter-react-v5":"^8.2.2","@alcalzone/release-script-plugin-license":"^5.1.1","@alcalzone/release-script-plugin-iobroker":"^5.1.2","@alcalzone/release-script-plugin-manual-review":"^5.1.1"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_0.5.0_1778101063285_0.3721002940411071","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"iobroker.hannah","version":"0.6.0","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@0.6.0","maintainers":[{"name":"bluefox","email":"dogafox@gmail.com"},{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"0aacfdd79ec6bb702c70c6544ae7c13ebd8377e4","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-0.6.0.tgz","fileCount":26,"integrity":"sha512-zO57HH1jrphtjjmjUMaVWY//2M6ieuo2efknuxE2bACevNF56E8Cx+f8JOy4y6UZQjT//qyn7JlmU2Dp2rq08g==","signatures":[{"sig":"MEQCIH/IxNqyf9hicNzeam4JZ/SurrbzSDGo9mzg7qqY67KZAiBEHzlg0/OpfSMTGGFya6fddFwQrjhF+zOjbV+pxHtK5g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iobroker.hannah@0.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":24792386},"main":"build/main.js","engines":{"node":">= 20"},"gitHead":"53f8e202d995ca5cd380c1e3aa1d7a3b30b58296","scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all && node -e \"require('fs').mkdirSync('build/proto',{recursive:true});require('fs').copyFileSync('src/proto/hannah.proto','build/proto/hannah.proto')\"","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","prepack":"npm run build","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","verify:package":"node scripts/verify-package-contents.mjs","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:78bd7777-7b60-4a83-a038-49a20401c6b2"}},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.15.0","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@grpc/grpc-js":"^1.12.0","@grpc/proto-loader":"^0.8.0","@iobroker/dm-utils":"^3.0.19","@iobroker/adapter-core":"^3.3.2"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^18.3.1","typescript":"~6.0.3","@types/node":"^20.19.39","@types/react":"^18.3.28","@mui/material":"^6.5.0","@emotion/react":"^11.14.0","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.1.1","@tsconfig/node20":"^20.1.9","@types/react-dom":"^18.3.7","@iobroker/testing":"^5.2.2","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@iobroker/eslint-config":"^2.2.0","@alcalzone/release-script":"^5.1.1","@iobroker/adapter-react-v5":"^8.2.2","@alcalzone/release-script-plugin-license":"^5.1.1","@alcalzone/release-script-plugin-iobroker":"^5.1.2","@alcalzone/release-script-plugin-manual-review":"^5.1.1"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_0.6.0_1779493072293_0.6692290786597392","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"iobroker.hannah","version":"0.7.0","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@0.7.0","maintainers":[{"name":"bluefox","email":"dogafox@gmail.com"},{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"8f62ac1ae53ea20849c713dbfe23c9951723f98a","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-0.7.0.tgz","fileCount":26,"integrity":"sha512-817fdryL3XdE4VRgsQ9hFHHwO7ALxl5nIKGmCBBMyEgpFJagnckM9ul0cnJ2wxdjbpmCxc6kBUuefAn1gwFUng==","signatures":[{"sig":"MEYCIQDu3jyuQU8eR48RwWzdcruDFFUb7aRi9CZhM80skEIDCgIhANq5yaoSKtIUBhSNEbDyXVvJE+BB1Ial39JdkAxW5v+K","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iobroker.hannah@0.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":24814167},"main":"build/main.js","engines":{"node":">= 20"},"gitHead":"ee998d394fd531124066cb7c0a2d5c45bdae0b3c","scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all && node -e \"require('fs').mkdirSync('build/proto',{recursive:true});require('fs').copyFileSync('src/proto/hannah.proto','build/proto/hannah.proto')\"","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","prepack":"npm run build","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","verify:package":"node scripts/verify-package-contents.mjs","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:78bd7777-7b60-4a83-a038-49a20401c6b2"}},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.15.0","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@grpc/grpc-js":"^1.12.0","@grpc/proto-loader":"^0.8.0","@iobroker/dm-utils":"^3.0.19","@iobroker/adapter-core":"^3.3.2"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^18.3.1","typescript":"~6.0.3","@types/node":"^20.19.39","@types/react":"^18.3.28","@mui/material":"^6.5.0","@emotion/react":"^11.14.0","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.1.1","@tsconfig/node20":"^20.1.9","@types/react-dom":"^18.3.7","@iobroker/testing":"^5.2.2","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@iobroker/eslint-config":"^2.2.0","@alcalzone/release-script":"^5.1.1","@iobroker/adapter-react-v5":"^8.2.2","@alcalzone/release-script-plugin-license":"^5.1.1","@alcalzone/release-script-plugin-iobroker":"^5.1.2","@alcalzone/release-script-plugin-manual-review":"^5.1.1"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_0.7.0_1779571466680_0.45662327964977867","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"iobroker.hannah","version":"0.8.0","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@0.8.0","maintainers":[{"name":"bluefox","email":"dogafox@gmail.com"},{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"62eb544c619c139cb69097bc8e8b14b50b05b8fe","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-0.8.0.tgz","fileCount":28,"integrity":"sha512-FQTqMk0WuhwBBE5m7385m2vkf4rAzxRZUU9ffNy6ISLe2R4g4uVxjS6UhNBupDy6Hk8nb1giK+183WPaxHSxKg==","signatures":[{"sig":"MEQCIC4Zyg1k0njWDzGD6mwTQIAhHZwCqgd0vrOjvRIIECJ5AiBpevnBV5nM2G2kn2QHjwtobKgQHHu4uYvEAQIVgIAXJg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iobroker.hannah@0.8.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":24824550},"main":"build/main.js","engines":{"node":">= 20"},"gitHead":"8af2f805f6545fe773dccecde97a6e96638e6320","scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all && node -e \"require('fs').mkdirSync('build/proto',{recursive:true});require('fs').copyFileSync('src/proto/hannah.proto','build/proto/hannah.proto')\"","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","prepack":"npm run build","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","verify:package":"node scripts/verify-package-contents.mjs","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:78bd7777-7b60-4a83-a038-49a20401c6b2"}},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.15.0","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@grpc/grpc-js":"^1.12.0","@grpc/proto-loader":"^0.8.0","@iobroker/dm-utils":"^3.0.19","@iobroker/adapter-core":"^3.3.2"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^18.3.1","typescript":"~6.0.3","@types/node":"^20.19.39","@types/react":"^18.3.28","@mui/material":"^6.5.0","@emotion/react":"^11.14.0","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.1.1","@tsconfig/node20":"^20.1.9","@types/react-dom":"^18.3.7","@iobroker/testing":"^5.2.2","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@iobroker/eslint-config":"^2.2.0","@alcalzone/release-script":"^5.1.1","@iobroker/adapter-react-v5":"^8.2.2","@alcalzone/release-script-plugin-license":"^5.1.1","@alcalzone/release-script-plugin-iobroker":"^5.1.2","@alcalzone/release-script-plugin-manual-review":"^5.1.1"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_0.8.0_1779585465970_0.8766153168488213","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"iobroker.hannah","version":"0.9.0","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@0.9.0","maintainers":[{"name":"bluefox","email":"dogafox@gmail.com"},{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"685ebecb3ac47072de15c1f987efaa70fbc481a5","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-0.9.0.tgz","fileCount":30,"integrity":"sha512-/W7tmJLfrB2zekXe/ZwK2LYzNvnOFeoBv7rut6KpN2aBQonf4OltGVd0gHZ4CWc96BEpWYIWa7vkBCUq/ft3sQ==","signatures":[{"sig":"MEUCIB8t/DX6Kg+73eycRKz9DikCjkZOnrQ6BpP6UQd8VDc+AiEA7DIZHlqP8rCyYM8xZAtxko4fPG2DhgdN08lHHex4blc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iobroker.hannah@0.9.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":24833440},"main":"build/main.js","engines":{"node":">= 20"},"gitHead":"ee45ddc3cd3f43b9a0bbfb4847a39735c59d7f6e","scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all && node -e \"require('fs').mkdirSync('build/proto',{recursive:true});require('fs').copyFileSync('src/proto/hannah.proto','build/proto/hannah.proto')\"","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","prepack":"npm run build","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","verify:package":"node scripts/verify-package-contents.mjs","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:78bd7777-7b60-4a83-a038-49a20401c6b2"}},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.15.0","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@grpc/grpc-js":"^1.12.0","@grpc/proto-loader":"^0.8.0","@iobroker/dm-utils":"^3.0.19","@iobroker/adapter-core":"^3.3.2"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^18.3.1","typescript":"~6.0.3","@types/node":"^20.19.39","@types/react":"^18.3.28","@mui/material":"^6.5.0","@emotion/react":"^11.14.0","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.1.1","@tsconfig/node20":"^20.1.9","@types/react-dom":"^18.3.7","@iobroker/testing":"^5.2.2","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@iobroker/eslint-config":"^2.2.0","@alcalzone/release-script":"^5.1.1","@iobroker/adapter-react-v5":"^8.2.2","@alcalzone/release-script-plugin-license":"^5.1.1","@alcalzone/release-script-plugin-iobroker":"^5.1.2","@alcalzone/release-script-plugin-manual-review":"^5.1.1"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_0.9.0_1779647255576_0.8472158924424524","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"name":"iobroker.hannah","version":"0.10.0","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@0.10.0","maintainers":[{"name":"bluefox","email":"dogafox@gmail.com"},{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"9eb687730eee5b11376842056b6882ca943fee05","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-0.10.0.tgz","fileCount":30,"integrity":"sha512-+7ntpzYdoyrq+CWoBlqU91RvI8Ml/RHXTxv5nUBoDrcDh/LdsFvs/JZEGVlsJITGYciVdeQcvDN2Whecp4dVUA==","signatures":[{"sig":"MEQCIBIhTBqFuY0w7JJ54Q2zZ6ragCPrXodfcG2kflf88mRJAiB33WUIhMXRn8DU2U+UGTsBPZz3ZrHug8t9uZg3EXPOAg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iobroker.hannah@0.10.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":24834992},"main":"build/main.js","engines":{"node":">= 20"},"gitHead":"b02210f1f1dff56627b175bb1944aa8e4a481c77","scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all && node -e \"require('fs').mkdirSync('build/proto',{recursive:true});require('fs').copyFileSync('src/proto/hannah.proto','build/proto/hannah.proto')\"","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","prepack":"npm run build","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","verify:package":"node scripts/verify-package-contents.mjs","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:78bd7777-7b60-4a83-a038-49a20401c6b2"}},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.15.0","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@grpc/grpc-js":"^1.12.0","@grpc/proto-loader":"^0.8.0","@iobroker/dm-utils":"^3.0.19","@iobroker/adapter-core":"^3.3.2"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^18.3.1","typescript":"~6.0.3","@types/node":"^20.19.39","@types/react":"^18.3.28","@mui/material":"^6.5.0","@emotion/react":"^11.14.0","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.1.1","@tsconfig/node20":"^20.1.9","@types/react-dom":"^18.3.7","@iobroker/testing":"^5.2.2","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@iobroker/eslint-config":"^2.2.0","@alcalzone/release-script":"^5.1.1","@iobroker/adapter-react-v5":"^8.2.2","@alcalzone/release-script-plugin-license":"^5.1.1","@alcalzone/release-script-plugin-iobroker":"^5.1.2","@alcalzone/release-script-plugin-manual-review":"^5.1.1"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_0.10.0_1779713929435_0.23121545390867837","host":"s3://npm-registry-packages-npm-production"}},"0.11.0":{"name":"iobroker.hannah","version":"0.11.0","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@0.11.0","maintainers":[{"name":"bluefox","email":"dogafox@gmail.com"},{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"cf5bcc846054a43b8924bc84675dc6e8a3b08f74","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-0.11.0.tgz","fileCount":30,"integrity":"sha512-KnF1cQt+3B3B+6rul3dmSwEWD8iQ2liKw0dL00+QbBNvRfAK6a8Kr/hRWZIeIBTUqxK7rifUAda5OFy2lVl3KA==","signatures":[{"sig":"MEYCIQCiDkGUIedBoqodty/TrBhTmD5k1DtG1GjRfpbHLQJKHgIhAKVsSdB4qPeoXf8N9ctyE4CS1wk/W+DIcffjHUYfp2xT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iobroker.hannah@0.11.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":24844207},"main":"build/main.js","engines":{"node":">= 20"},"gitHead":"0031141e15b1885c71023771862902d039794b91","scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all && node -e \"require('fs').mkdirSync('build/proto',{recursive:true});require('fs').copyFileSync('src/proto/hannah.proto','build/proto/hannah.proto')\"","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","prepack":"npm run build","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","verify:package":"node scripts/verify-package-contents.mjs","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:78bd7777-7b60-4a83-a038-49a20401c6b2"}},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.16.0","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@grpc/grpc-js":"^1.12.0","@grpc/proto-loader":"^0.8.0","@iobroker/dm-utils":"^3.0.19","@iobroker/adapter-core":"^3.3.2"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^18.3.1","typescript":"~6.0.3","@types/node":"^20.19.39","@types/react":"^18.3.28","@mui/material":"^6.5.0","@emotion/react":"^11.14.0","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.1.1","@tsconfig/node20":"^20.1.9","@types/react-dom":"^18.3.7","@iobroker/testing":"^5.2.2","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@iobroker/eslint-config":"^2.2.0","@alcalzone/release-script":"^5.1.1","@iobroker/adapter-react-v5":"^8.2.2","@alcalzone/release-script-plugin-license":"^5.1.1","@alcalzone/release-script-plugin-iobroker":"^5.1.2","@alcalzone/release-script-plugin-manual-review":"^5.1.1"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_0.11.0_1779915447538_0.6043532548486654","host":"s3://npm-registry-packages-npm-production"}},"0.11.1":{"name":"iobroker.hannah","version":"0.11.1","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@0.11.1","maintainers":[{"name":"bluefox","email":"dogafox@gmail.com"},{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"b5e8615fe4f7932c5d731561b871b2373ad0e8a2","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-0.11.1.tgz","fileCount":30,"integrity":"sha512-9vg6JQgtSpQKSucyhSIr8zxjRpfnA2r8ICC5RpUdW1bdYmZsrtegrk0Sp2lBL8owmOcXm4BiwXRWF9n+DyZdpA==","signatures":[{"sig":"MEQCIFdNPfD9TyPTSLaXPv0XEOOLZ5caNg9ro+uZRr8BJRidAiBm0ffbj2B9J7pGtA6uA+BkUFc19YOLVckTEiJUBCDlFg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iobroker.hannah@0.11.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":24843122},"main":"build/main.js","engines":{"node":">= 20"},"gitHead":"2fc297124aebe81797bfd3c24c314abd34e58664","scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all && node -e \"require('fs').mkdirSync('build/proto',{recursive:true});require('fs').copyFileSync('src/proto/hannah.proto','build/proto/hannah.proto')\"","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","prepack":"npm run build","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","verify:package":"node scripts/verify-package-contents.mjs","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:78bd7777-7b60-4a83-a038-49a20401c6b2"}},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.16.0","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@grpc/grpc-js":"^1.12.0","@grpc/proto-loader":"^0.8.0","@iobroker/dm-utils":"^3.0.19","@iobroker/adapter-core":"^3.3.2"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^18.3.1","typescript":"~6.0.3","@types/node":"^20.19.39","@types/react":"^18.3.28","@mui/material":"^6.5.0","@emotion/react":"^11.14.0","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.1.1","@tsconfig/node20":"^20.1.9","@types/react-dom":"^18.3.7","@iobroker/testing":"^5.2.2","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@iobroker/eslint-config":"^2.2.0","@alcalzone/release-script":"^5.1.1","@iobroker/adapter-react-v5":"^8.2.2","@alcalzone/release-script-plugin-license":"^5.1.1","@alcalzone/release-script-plugin-iobroker":"^5.1.2","@alcalzone/release-script-plugin-manual-review":"^5.1.1"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_0.11.1_1780351982708_0.0031395313739150943","host":"s3://npm-registry-packages-npm-production"}},"0.11.2":{"name":"iobroker.hannah","version":"0.11.2","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@0.11.2","maintainers":[{"name":"bluefox","email":"dogafox@gmail.com"},{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"7499d2b3ef805d19aa5773a02123161fb3ee476f","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-0.11.2.tgz","fileCount":30,"integrity":"sha512-EfSzfmhsesg1NifI6rMEJtc6/++RQqi9/T1n+RwDlBEdzgzbhsPW8bWoOtGhYtiNFdJkj7CMJBfLi81Qbe5T6Q==","signatures":[{"sig":"MEYCIQCtCAyK4NHfN98xeQ66oFsluMfxTaoUoaYQdjxaItqOvAIhAPLY6trWGdzJEsnhqVaZ11fVjBRhkFVRNdCuea32mhNQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iobroker.hannah@0.11.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":24814355},"main":"build/main.js","engines":{"node":">= 22"},"gitHead":"fe5555441d24131b8cfed2afae2a7c5feacbec38","scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all && node -e \"require('fs').mkdirSync('build/proto',{recursive:true});require('fs').copyFileSync('src/proto/hannah.proto','build/proto/hannah.proto')\"","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","prepack":"npm run build","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","verify:package":"node scripts/verify-package-contents.mjs","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:78bd7777-7b60-4a83-a038-49a20401c6b2"}},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.16.0","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"@grpc/grpc-js":"^1.12.0","@grpc/proto-loader":"^0.8.0","@iobroker/dm-utils":"^3.0.19","@iobroker/adapter-core":"^3.3.2"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^18.3.1","typescript":"~6.0.3","@types/node":"^20.19.39","@types/react":"^18.3.28","@mui/material":"^6.5.0","@emotion/react":"^11.14.0","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.1.1","@tsconfig/node20":"^20.1.9","@types/react-dom":"^18.3.7","@iobroker/testing":"^5.2.2","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@iobroker/eslint-config":"^2.2.0","@alcalzone/release-script":"^5.2.0","@iobroker/adapter-react-v5":"^8.2.2","@alcalzone/release-script-plugin-license":"^5.2.0","@alcalzone/release-script-plugin-iobroker":"^5.2.0","@alcalzone/release-script-plugin-manual-review":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_0.11.2_1780354466940_0.3777863739992089","host":"s3://npm-registry-packages-npm-production"}},"0.11.3":{"name":"iobroker.hannah","version":"0.11.3","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@0.11.3","maintainers":[{"name":"bluefox","email":"dogafox@gmail.com"},{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"c27b583d75d77de0aa259c6e85750160117c16cd","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-0.11.3.tgz","fileCount":30,"integrity":"sha512-L0zv5Cg/PsXLnuSzenYpVLSWxuDWQ2Me4TOgaeviurN5Fs1OoWtuInY91CBk+HqL4cSYD07umtOAEwXoXAXoqw==","signatures":[{"sig":"MEQCIDFfpN4qtXJwUokYiKthiX+4nknJ6XU2iPQSm1S8FQR/AiAPTfKA9nyWloOHvMc8P8G4M7/vDCibUD/quY31YieC1A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iobroker.hannah@0.11.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":24808698},"main":"build/main.js","engines":{"node":">= 22"},"gitHead":"8abaff1c24bce9235743805f3f2f7e9bfa73203c","scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all && node -e \"require('fs').mkdirSync('build/proto',{recursive:true});require('fs').copyFileSync('src/proto/hannah.proto','build/proto/hannah.proto')\"","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","prepack":"npm run build","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","verify:package":"node scripts/verify-package-contents.mjs","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:78bd7777-7b60-4a83-a038-49a20401c6b2"}},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.16.0","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"@grpc/grpc-js":"^1.14.4","@grpc/proto-loader":"^0.8.1","@iobroker/dm-utils":"^3.0.19","@iobroker/adapter-core":"^3.3.2"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^18.3.1","typescript":"~6.0.3","@types/node":"^20.19.39","@types/react":"^18.3.28","@mui/material":"^6.5.0","@emotion/react":"^11.14.0","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.1.2","@tsconfig/node22":"^22.0.5","@types/react-dom":"^18.3.7","@iobroker/testing":"^5.2.2","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@iobroker/eslint-config":"^2.2.0","@alcalzone/release-script":"^5.2.0","@iobroker/adapter-react-v5":"^8.2.2","@alcalzone/release-script-plugin-license":"^5.2.0","@alcalzone/release-script-plugin-iobroker":"^5.2.0","@alcalzone/release-script-plugin-manual-review":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_0.11.3_1780416797257_0.048480742596738846","host":"s3://npm-registry-packages-npm-production"}},"0.12.0":{"name":"iobroker.hannah","version":"0.12.0","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@0.12.0","maintainers":[{"name":"bluefox","email":"dogafox@gmail.com"},{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"e2e5a1ff81e45d773879a0f584e14489abc30848","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-0.12.0.tgz","fileCount":30,"integrity":"sha512-031sNY9OZLzauuoVEdyWfHd6xv3NEpJTmH2BYvb5pqg69d/8Y3b4uziiiYcqZqz0GgizZ2WATtc1JBVOmTlOqg==","signatures":[{"sig":"MEUCIHmqJhtmnkQcswzdJG2psi7FxnKwxBVYL1StMQIrhmzaAiEA3aPyZzsvKx5LfgzKO/HX4QXu5LwrVN7CQ59wiGY1WFU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iobroker.hannah@0.12.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":24814655},"main":"build/main.js","engines":{"node":">= 22"},"gitHead":"6db586ef4662dac69d3c500c82dedcb9419d3911","scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all && node -e \"require('fs').mkdirSync('build/proto',{recursive:true});require('fs').copyFileSync('src/proto/hannah.proto','build/proto/hannah.proto')\"","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","prepack":"npm run build","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","verify:package":"node scripts/verify-package-contents.mjs","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:78bd7777-7b60-4a83-a038-49a20401c6b2"}},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.16.0","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"@grpc/grpc-js":"^1.14.4","@grpc/proto-loader":"^0.8.1","@iobroker/dm-utils":"^3.0.19","@iobroker/adapter-core":"^3.3.2"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^18.3.1","typescript":"~6.0.3","@types/node":"^20.19.39","@types/react":"^18.3.28","@mui/material":"^6.5.0","@emotion/react":"^11.14.0","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.1.2","@tsconfig/node22":"^22.0.5","@types/react-dom":"^18.3.7","@iobroker/testing":"^5.2.2","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@iobroker/eslint-config":"^2.2.0","@alcalzone/release-script":"^5.2.0","@iobroker/adapter-react-v5":"^8.2.2","@alcalzone/release-script-plugin-license":"^5.2.0","@alcalzone/release-script-plugin-iobroker":"^5.2.0","@alcalzone/release-script-plugin-manual-review":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_0.12.0_1780606147331_0.8396469146193728","host":"s3://npm-registry-packages-npm-production"}},"0.12.1":{"name":"iobroker.hannah","version":"0.12.1","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@0.12.1","maintainers":[{"name":"bluefox","email":"dogafox@gmail.com"},{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"dd8fbd852740f95c9417ff2c9b6b93345c3db73d","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-0.12.1.tgz","fileCount":30,"integrity":"sha512-Pk2OBlQV+NzUUwCkCJxjK4vdHzI3n+vdDht1V1oli7lbBb3u/UvuNYuectfLpm/cQXcqW0Ms2WbiYgcS2dpG/Q==","signatures":[{"sig":"MEUCIQDVdmHB3j9RkOyAUq7r2KCYGvgbXfzmF4YOlFbWxx8ydgIgdugfhPYMN/D7qpotffsKRbenYjaHVetBRYJVsyx1axM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iobroker.hannah@0.12.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":24814383},"main":"build/main.js","engines":{"node":">= 22"},"gitHead":"c8c9993708df3826a580ceb6f438a9bf0c70268d","scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all && node -e \"require('fs').mkdirSync('build/proto',{recursive:true});require('fs').copyFileSync('src/proto/hannah.proto','build/proto/hannah.proto')\"","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","prepack":"npm run build","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","verify:package":"node scripts/verify-package-contents.mjs","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:78bd7777-7b60-4a83-a038-49a20401c6b2"}},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.16.0","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"@grpc/grpc-js":"^1.14.4","@grpc/proto-loader":"^0.8.1","@iobroker/dm-utils":"^3.0.19","@iobroker/adapter-core":"^3.3.2"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^18.3.1","typescript":"~6.0.3","@types/node":"^20.19.39","@types/react":"^18.3.28","@mui/material":"^6.5.0","@emotion/react":"^11.14.0","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.1.2","@tsconfig/node22":"^22.0.5","@types/react-dom":"^18.3.7","@iobroker/testing":"^5.2.2","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@iobroker/eslint-config":"^2.2.0","@alcalzone/release-script":"^5.2.0","@iobroker/adapter-react-v5":"^8.2.2","@alcalzone/release-script-plugin-license":"^5.2.0","@alcalzone/release-script-plugin-iobroker":"^5.2.0","@alcalzone/release-script-plugin-manual-review":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_0.12.1_1780610507034_0.783358609210778","host":"s3://npm-registry-packages-npm-production"}},"0.13.0":{"name":"iobroker.hannah","version":"0.13.0","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@0.13.0","maintainers":[{"name":"bluefox","email":"dogafox@gmail.com"},{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"06dd78d3cc3ff1d923bc5e0b18007a3b194c2013","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-0.13.0.tgz","fileCount":30,"integrity":"sha512-ubPUDoN78HeZfRmZSq9bWw8mqcXQGt3j0fB/4u4g3Y1KKTc2mTKacga55txniJ0o30xPqhqSL5+inz/bg9TrcQ==","signatures":[{"sig":"MEYCIQCOIwEhsQoViJGtm5rTAJpFhwTm6j/cA+DamXlYud72eAIhAOpf4bnqqPLDV27bwXbG4nQ9sLUdOvQsYQmNBO7vMeMP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iobroker.hannah@0.13.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":24825353},"main":"build/main.js","engines":{"node":">= 22"},"gitHead":"75b315b355b1677d09efd257d125bc6d93a326a9","scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all && node -e \"require('fs').mkdirSync('build/proto',{recursive:true});require('fs').copyFileSync('src/proto/hannah.proto','build/proto/hannah.proto')\"","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","prepack":"npm run build","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","verify:package":"node scripts/verify-package-contents.mjs","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:78bd7777-7b60-4a83-a038-49a20401c6b2"}},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.16.0","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"@grpc/grpc-js":"^1.14.4","@grpc/proto-loader":"^0.8.1","@iobroker/dm-utils":"^3.0.19","@iobroker/adapter-core":"^3.3.2"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^18.3.1","typescript":"~6.0.3","@types/node":"^20.19.39","@types/react":"^18.3.28","@mui/material":"^6.5.0","@emotion/react":"^11.14.0","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.1.2","@tsconfig/node22":"^22.0.5","@types/react-dom":"^18.3.7","@iobroker/testing":"^5.2.2","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@iobroker/eslint-config":"^2.2.0","@alcalzone/release-script":"^5.2.1","@iobroker/adapter-react-v5":"^8.2.2","@alcalzone/release-script-plugin-license":"^5.2.0","@alcalzone/release-script-plugin-iobroker":"^5.2.0","@alcalzone/release-script-plugin-manual-review":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_0.13.0_1780688562311_0.582545794708822","host":"s3://npm-registry-packages-npm-production"}},"0.14.0":{"name":"iobroker.hannah","version":"0.14.0","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@0.14.0","maintainers":[{"name":"bluefox","email":"dogafox@gmail.com"},{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"d55f57f05054b216f9fb0ec878a1b4aaeced6f7c","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-0.14.0.tgz","fileCount":33,"integrity":"sha512-v5tXmcklJK+gv/i3nuiYlJ4Cu2AMUamWzs4M6lNSZoPMt88gRARvnaW8QbkCW13aDEZHI+bpXkJefioflpFogg==","signatures":[{"sig":"MEUCIG8eczfbmaKmRLC0S1g2061FiTSH0QoZVjb7/LlZ2PVXAiEAsIUePEE9hm07cAItV4YGlbDi6zBodwa3H8qoTtyPfg4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iobroker.hannah@0.14.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":47424099},"main":"build/main.js","engines":{"node":">= 22"},"gitHead":"fe74eee3cfea6b0cb0b89e3751f77536bee14610","scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all && node -e \"require('fs').mkdirSync('build/proto',{recursive:true});require('fs').copyFileSync('src/proto/hannah.proto','build/proto/hannah.proto')\"","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","prepack":"npm run build","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","verify:package":"node scripts/verify-package-contents.mjs","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:78bd7777-7b60-4a83-a038-49a20401c6b2"}},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.16.0","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"@grpc/grpc-js":"^1.14.4","@grpc/proto-loader":"^0.8.1","@iobroker/dm-utils":"^3.0.19","@iobroker/adapter-core":"^3.3.2"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^18.3.1","typescript":"~6.0.3","@types/node":"^20.19.39","@types/react":"^18.3.28","@mui/material":"^6.5.0","@emotion/react":"^11.14.0","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.1.2","@tsconfig/node22":"^22.0.5","@types/react-dom":"^18.3.7","@iobroker/testing":"^5.2.2","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@iobroker/eslint-config":"^2.2.0","@alcalzone/release-script":"^5.2.1","@iobroker/adapter-react-v5":"^8.2.2","@alcalzone/release-script-plugin-license":"^5.2.0","@alcalzone/release-script-plugin-iobroker":"^5.2.0","@alcalzone/release-script-plugin-manual-review":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_0.14.0_1781038315186_0.4159779200189935","host":"s3://npm-registry-packages-npm-production"}},"0.15.0":{"name":"iobroker.hannah","version":"0.15.0","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@0.15.0","maintainers":[{"name":"bluefox","email":"dogafox@gmail.com"},{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"f6807cc0155f13b6f6d58bff2b5d47c2af60f26b","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-0.15.0.tgz","fileCount":35,"integrity":"sha512-+ird474Lq5rKb00+TVPyQJLXvWXcV72h23jL7yfT14J2NlSQYR5MQZ5ot6E86pg4s2ceT31QpYGTjWSOsstuMA==","signatures":[{"sig":"MEYCIQCKPcLwJE7MrhtOq3LGggWdh/po6uF5YkKmBQNCT8JvHAIhAMPr1IB9n5uHNQ32na/6trfZnfq5JlYcPywmY0GJ5HUZ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iobroker.hannah@0.15.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":48700463},"main":"build/main.js","engines":{"node":">= 22"},"gitHead":"81b0f722ce8483d97f46c529780981202786523b","scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all && node -e \"require('fs').mkdirSync('build/proto',{recursive:true});require('fs').copyFileSync('src/proto/hannah.proto','build/proto/hannah.proto')\"","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","prepack":"npm run build","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","verify:package":"node scripts/verify-package-contents.mjs","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:78bd7777-7b60-4a83-a038-49a20401c6b2"}},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.17.0","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"24.16.0","allowScripts":{"diskusage@1.2.0":true,"esbuild@0.11.23":true,"esbuild@0.25.12":true,"protobufjs@7.5.5":true,"unix-dgram@2.0.6":true},"dependencies":{"adm-zip":"^0.5.17","@grpc/grpc-js":"^1.14.4","@grpc/proto-loader":"^0.8.1","@iobroker/dm-utils":"^3.0.19","@iobroker/adapter-core":"^3.3.2"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^18.3.1","esptool-js":"^0.6.0","typescript":"~6.0.3","@types/node":"^20.19.41","@types/react":"^18.3.28","@mui/material":"^6.5.0","@emotion/react":"^11.14.0","@types/adm-zip":"^0.5.8","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.1.2","@tsconfig/node22":"^22.0.5","@types/react-dom":"^18.3.7","@iobroker/testing":"^5.2.2","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@m1kad0/esp-nvs-utils":"^0.2.1","@iobroker/eslint-config":"^2.3.4","@alcalzone/release-script":"^5.2.1","@iobroker/adapter-react-v5":"^8.2.7","@alcalzone/release-script-plugin-license":"^5.2.0","@alcalzone/release-script-plugin-iobroker":"^5.2.0","@alcalzone/release-script-plugin-manual-review":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_0.15.0_1781214583101_0.7244193446198011","host":"s3://npm-registry-packages-npm-production"}},"0.15.1":{"name":"iobroker.hannah","version":"0.15.1","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@0.15.1","maintainers":[{"name":"bluefox","email":"dogafox@gmail.com"},{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"1833a11e24027d8ea988e93f8edf976ae68246f8","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-0.15.1.tgz","fileCount":35,"integrity":"sha512-6i6dqA28u+whpj0v6ox3EmyhcovfojJ2Bai2C8TlTbuAWw27blmEsUuQkeLMeAj/Vvc6tNSal1TyJz4dURZ0QA==","signatures":[{"sig":"MEQCIGNMU+wCKZ6XO749rlZUbtWYc36YPbFrogUbvAAbLOZwAiAeeYS9qdFwhJXPxRhoPVEtMObmJ4MLeznXI9EP2Tb6Og==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iobroker.hannah@0.15.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":48701022},"main":"build/main.js","engines":{"node":">= 22"},"gitHead":"d23119fd862eeb148d683e84f9e26554936702fc","scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all && node -e \"require('fs').mkdirSync('build/proto',{recursive:true});require('fs').copyFileSync('src/proto/hannah.proto','build/proto/hannah.proto')\"","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","prepack":"npm run build","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","verify:package":"node scripts/verify-package-contents.mjs","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:78bd7777-7b60-4a83-a038-49a20401c6b2"}},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.17.0","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"adm-zip":"^0.5.17","@grpc/grpc-js":"^1.14.4","@grpc/proto-loader":"^0.8.1","@iobroker/dm-utils":"^3.0.19","@iobroker/adapter-core":"^3.3.2"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^18.3.1","esptool-js":"^0.6.0","typescript":"~6.0.3","@types/node":"^20.19.41","@types/react":"^18.3.28","@mui/material":"^6.5.0","@emotion/react":"^11.14.0","@types/adm-zip":"^0.5.8","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.1.2","@tsconfig/node22":"^22.0.5","@types/react-dom":"^18.3.7","@iobroker/testing":"^5.2.2","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@m1kad0/esp-nvs-utils":"^0.2.1","@iobroker/eslint-config":"^2.3.4","@alcalzone/release-script":"^5.2.1","@iobroker/adapter-react-v5":"^8.2.7","@alcalzone/release-script-plugin-license":"^5.2.0","@alcalzone/release-script-plugin-iobroker":"^5.2.0","@alcalzone/release-script-plugin-manual-review":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_0.15.1_1781216621549_0.943425658574367","host":"s3://npm-registry-packages-npm-production"}},"0.15.2":{"name":"iobroker.hannah","version":"0.15.2","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@0.15.2","maintainers":[{"name":"bluefox","email":"dogafox@gmail.com"},{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"aed1d5d6b32c65ddc6c1f57269a1fcb923ae41e5","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-0.15.2.tgz","fileCount":35,"integrity":"sha512-UGm+uKV0CeXCfSnWscvBXX2UhjbO0jvKg/rt8KHiZXUBzzJ14ZMP1VivBHWzqOAT1o+lRjkcq5t5/rGgK9cIPA==","signatures":[{"sig":"MEUCIQDQwHH651jxR/o+Yca78kxeEHLKg0tif9tTT4jPVpvbtQIgal/zJNfWjHrXMH77JDwREo9rLujkE4Tbq01alvp3fkc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iobroker.hannah@0.15.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":48717053},"main":"build/main.js","engines":{"node":">= 22"},"gitHead":"91b16017009126cf46a82bde430b1af4598248c9","scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all && node -e \"require('fs').mkdirSync('build/proto',{recursive:true});require('fs').copyFileSync('src/proto/hannah.proto','build/proto/hannah.proto')\"","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","prepack":"npm run build","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","verify:package":"node scripts/verify-package-contents.mjs","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:78bd7777-7b60-4a83-a038-49a20401c6b2"}},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.17.0","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"adm-zip":"^0.5.17","@grpc/grpc-js":"^1.14.4","@grpc/proto-loader":"^0.8.1","@iobroker/dm-utils":"^3.0.19","@iobroker/adapter-core":"^3.3.2"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^18.3.1","esptool-js":"^0.6.0","typescript":"~6.0.3","@types/node":"^20.19.41","@types/react":"^18.3.28","@mui/material":"^6.5.0","@emotion/react":"^11.14.0","@types/adm-zip":"^0.5.8","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.1.2","@tsconfig/node22":"^22.0.5","@types/react-dom":"^18.3.7","@iobroker/testing":"^5.2.2","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@m1kad0/esp-nvs-utils":"^0.2.1","@iobroker/eslint-config":"^2.3.4","@alcalzone/release-script":"^5.2.1","@iobroker/adapter-react-v5":"^8.2.7","@alcalzone/release-script-plugin-license":"^5.2.0","@alcalzone/release-script-plugin-iobroker":"^5.2.0","@alcalzone/release-script-plugin-manual-review":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_0.15.2_1781305431094_0.9318896876928928","host":"s3://npm-registry-packages-npm-production"}},"0.15.3":{"name":"iobroker.hannah","version":"0.15.3","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@0.15.3","maintainers":[{"name":"bluefox","email":"dogafox@gmail.com"},{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"ce6f9a4203eae520c1737c82be529b06563d794e","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-0.15.3.tgz","fileCount":35,"integrity":"sha512-NKYobD8omqROOiFdfO61WYyhpukDA3weQaQmOgSJnhaX2fDbX04/0mtEA5tTFhOtflNMaiuHa6YnbisJmSethg==","signatures":[{"sig":"MEQCIHrFmaXT1xFL/p56PVhCFuk+tAseQVIizhJAtMba41URAiAxCxg1XdCDp1EuwK+e0AIMelSLm6gKYmJeyarGyGpQ/A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iobroker.hannah@0.15.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":48725557},"main":"build/main.js","engines":{"node":">= 22"},"gitHead":"3d925291f86d918a3467eebefb1d124cd465a74f","scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all && node -e \"require('fs').mkdirSync('build/proto',{recursive:true});require('fs').copyFileSync('src/proto/hannah.proto','build/proto/hannah.proto')\"","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","prepack":"npm run build","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","verify:package":"node scripts/verify-package-contents.mjs","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:78bd7777-7b60-4a83-a038-49a20401c6b2"}},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.17.0","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"adm-zip":"^0.5.17","@grpc/grpc-js":"^1.14.4","@grpc/proto-loader":"^0.8.1","@iobroker/dm-utils":"^3.0.19","@iobroker/adapter-core":"^3.3.2"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^18.3.1","esptool-js":"^0.6.0","typescript":"~6.0.3","@types/node":"^20.19.41","@types/react":"^18.3.28","@mui/material":"^6.5.0","@emotion/react":"^11.14.0","@types/adm-zip":"^0.5.8","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.1.2","@tsconfig/node22":"^22.0.5","@types/react-dom":"^18.3.7","@iobroker/testing":"^5.2.2","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@m1kad0/esp-nvs-utils":"^0.2.1","@iobroker/eslint-config":"^2.3.4","@alcalzone/release-script":"^5.2.1","@iobroker/adapter-react-v5":"^8.2.7","@alcalzone/release-script-plugin-license":"^5.2.0","@alcalzone/release-script-plugin-iobroker":"^5.2.0","@alcalzone/release-script-plugin-manual-review":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_0.15.3_1781358904178_0.6348808287906789","host":"s3://npm-registry-packages-npm-production"}},"0.16.0":{"name":"iobroker.hannah","version":"0.16.0","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@0.16.0","maintainers":[{"name":"bluefox","email":"dogafox@gmail.com"},{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"735e389139d8175bb8618563eaeadb8e20db0509","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-0.16.0.tgz","fileCount":35,"integrity":"sha512-7TyEbPJNDbLc8NC0g1DLkFTwuA/1X4kjs29LP1NttU/QOLKe5YymJwWjyuhyzjIVPJ69fNbv4oJAwtZ0MxLb2Q==","signatures":[{"sig":"MEUCIBWKN6WaxbefEynuXKG00GfTsJvv11+MLQ3Iw8JtYE4eAiEA+XKaOqBpjCxIeN8NUmk02jO8OHvTcRapHSLpnW7V3j8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iobroker.hannah@0.16.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":48735563},"main":"build/main.js","engines":{"node":">= 22"},"gitHead":"84db1d72fa08310c09cb15a5f21bb508a62375aa","scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all && node -e \"require('fs').mkdirSync('build/proto',{recursive:true});require('fs').copyFileSync('src/proto/hannah.proto','build/proto/hannah.proto')\"","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","prepack":"npm run build","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","verify:package":"node scripts/verify-package-contents.mjs","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:78bd7777-7b60-4a83-a038-49a20401c6b2"}},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.17.0","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"adm-zip":"^0.5.17","@grpc/grpc-js":"^1.14.4","@grpc/proto-loader":"^0.8.1","@iobroker/dm-utils":"^3.0.19","@iobroker/adapter-core":"^3.3.2"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^18.3.1","esptool-js":"^0.6.0","typescript":"~6.0.3","@types/node":"^20.19.41","@types/react":"^18.3.28","@mui/material":"^6.5.0","@emotion/react":"^11.14.0","@types/adm-zip":"^0.5.8","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.1.2","@tsconfig/node22":"^22.0.5","@types/react-dom":"^18.3.7","@iobroker/testing":"^5.2.2","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@m1kad0/esp-nvs-utils":"^0.2.1","@iobroker/eslint-config":"^2.3.4","@alcalzone/release-script":"^5.2.1","@iobroker/adapter-react-v5":"^8.2.7","@alcalzone/release-script-plugin-license":"^5.2.0","@alcalzone/release-script-plugin-iobroker":"^5.2.0","@alcalzone/release-script-plugin-manual-review":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_0.16.0_1781621287754_0.7467794308058915","host":"s3://npm-registry-packages-npm-production"}},"0.17.0":{"name":"iobroker.hannah","version":"0.17.0","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@0.17.0","maintainers":[{"name":"bluefox","email":"dogafox@gmail.com"},{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"f87c8b1bd3fc73e66b16844780d130736eda6942","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-0.17.0.tgz","fileCount":35,"integrity":"sha512-TlDHW1TS7T7GZJwxmoL5wiptmSA0ZkBMoXVRqmVILQztHdAP9b1uFl3yHjwJ6mLGKzZTvwh0cjWuhV47m2PZnA==","signatures":[{"sig":"MEQCIAkHL0/wCVesvSAv8Jd41GXO8RnzLfZwBRgptCCKB5zcAiBD88a4zjD2BiB18o4qIVzAwP6BmrLCLbwvh2EGe7JkzA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iobroker.hannah@0.17.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":48733522},"main":"build/main.js","engines":{"node":">= 22"},"gitHead":"2bae0b43afc88b4ad458764679d3f71c02dcd1b6","scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all && node -e \"require('fs').mkdirSync('build/proto',{recursive:true});require('fs').copyFileSync('src/proto/hannah.proto','build/proto/hannah.proto')\"","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","prepack":"npm run build","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","verify:package":"node scripts/verify-package-contents.mjs","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:78bd7777-7b60-4a83-a038-49a20401c6b2"}},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.17.0","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"adm-zip":"^0.5.17","@grpc/grpc-js":"^1.14.4","@grpc/proto-loader":"^0.8.1","@iobroker/dm-utils":"^3.0.19","@iobroker/adapter-core":"^3.3.2"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^18.3.1","esptool-js":"^0.6.0","typescript":"~6.0.3","@types/node":"^20.19.41","@types/react":"^18.3.28","@mui/material":"^6.5.0","@emotion/react":"^11.14.0","@types/adm-zip":"^0.5.8","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.1.2","@tsconfig/node22":"^22.0.5","@types/react-dom":"^18.3.7","@iobroker/testing":"^5.2.2","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@m1kad0/esp-nvs-utils":"^0.2.1","@iobroker/eslint-config":"^2.3.4","@alcalzone/release-script":"^5.2.1","@iobroker/adapter-react-v5":"^8.2.7","@alcalzone/release-script-plugin-license":"^5.2.0","@alcalzone/release-script-plugin-iobroker":"^5.2.0","@alcalzone/release-script-plugin-manual-review":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_0.17.0_1781646729379_0.7480474083293218","host":"s3://npm-registry-packages-npm-production"}},"0.18.0":{"name":"iobroker.hannah","version":"0.18.0","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@0.18.0","maintainers":[{"name":"bluefox","email":"dogafox@gmail.com"},{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"5733004d67a573d4a22ed1836995c4f4b9df2888","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-0.18.0.tgz","fileCount":35,"integrity":"sha512-KdYpuLWrWUVDulRhu0neYTiMMa30C8YoWDp1M8dRRtPexl5/ZBQ/MW6I9oSGmly/GezI2UObOP4NUQxIWfWFLw==","signatures":[{"sig":"MEYCIQDgpVHNUnaRS4T4mla1hikIwcqR9/Jl3DWWhDdgyvhZfQIhALQ30GPTsI/ZMgpq7G5T0j/GAED+jGrEaNhLkHnY6HMz","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iobroker.hannah@0.18.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":48743925},"main":"build/main.js","engines":{"node":">= 22"},"gitHead":"196746c93536f2b6b72181dbdb3f426005fecefb","scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all && node -e \"require('fs').mkdirSync('build/proto',{recursive:true});require('fs').copyFileSync('src/proto/hannah.proto','build/proto/hannah.proto')\"","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","prepack":"npm run build","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","verify:package":"node scripts/verify-package-contents.mjs","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:78bd7777-7b60-4a83-a038-49a20401c6b2"}},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.17.0","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"adm-zip":"^0.5.17","@grpc/grpc-js":"^1.14.4","@grpc/proto-loader":"^0.8.1","@iobroker/dm-utils":"^3.0.19","@iobroker/adapter-core":"^3.3.2"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^18.3.1","esptool-js":"^0.6.0","typescript":"~6.0.3","@types/node":"^20.19.41","@types/react":"^18.3.28","@mui/material":"^6.5.0","@emotion/react":"^11.14.0","@types/adm-zip":"^0.5.8","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.1.2","@tsconfig/node22":"^22.0.5","@types/react-dom":"^18.3.7","@iobroker/testing":"^5.2.2","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@m1kad0/esp-nvs-utils":"^0.2.1","@iobroker/eslint-config":"^2.3.4","@alcalzone/release-script":"^5.2.1","@iobroker/adapter-react-v5":"^8.2.7","@alcalzone/release-script-plugin-license":"^5.2.0","@alcalzone/release-script-plugin-iobroker":"^5.2.0","@alcalzone/release-script-plugin-manual-review":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_0.18.0_1781799267992_0.11863562638783476","host":"s3://npm-registry-packages-npm-production"}},"0.19.0":{"name":"iobroker.hannah","version":"0.19.0","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@0.19.0","maintainers":[{"name":"bluefox","email":"dogafox@gmail.com"},{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"6e65d75ac5b132a4883de03d512c0a0b4bcc47e8","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-0.19.0.tgz","fileCount":35,"integrity":"sha512-Q0SjgoXIP/CNnjMZDsvavNnHDAfKeEYS+zSoFfVKVPGPvupKE9E+atyjwCi/of11L6wXqIoKB95E8wdocs5nog==","signatures":[{"sig":"MEUCIF3K6RMT3ZIgucZXKz6Z6tS0F3F2Z+VC3LHExmeS+ICPAiEAz9ajsjy3sBPIVp6bSrvoVI70xpPV+sQ4VFc+jAhjkuk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iobroker.hannah@0.19.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":48748988},"main":"build/main.js","engines":{"node":">= 22"},"gitHead":"9dd2c18d5e646f145f4ee15909335ed495d49649","scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all && node -e \"require('fs').mkdirSync('build/proto',{recursive:true});require('fs').copyFileSync('src/proto/hannah.proto','build/proto/hannah.proto')\"","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","prepack":"npm run build","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","verify:package":"node scripts/verify-package-contents.mjs","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:78bd7777-7b60-4a83-a038-49a20401c6b2"}},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.17.0","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"adm-zip":"^0.5.17","@grpc/grpc-js":"^1.14.4","@grpc/proto-loader":"^0.8.1","@iobroker/dm-utils":"^3.0.19","@iobroker/adapter-core":"^3.3.2"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^18.3.1","esptool-js":"^0.6.0","typescript":"~6.0.3","@types/node":"^20.19.41","@types/react":"^18.3.28","@mui/material":"^6.5.0","@emotion/react":"^11.14.0","@types/adm-zip":"^0.5.8","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.1.2","@tsconfig/node22":"^22.0.5","@types/react-dom":"^18.3.7","@iobroker/testing":"^5.2.2","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@m1kad0/esp-nvs-utils":"^0.2.1","@iobroker/eslint-config":"^2.3.4","@alcalzone/release-script":"^5.2.1","@iobroker/adapter-react-v5":"^8.2.7","@alcalzone/release-script-plugin-license":"^5.2.0","@alcalzone/release-script-plugin-iobroker":"^5.2.0","@alcalzone/release-script-plugin-manual-review":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_0.19.0_1781809588091_0.4592727229698208","host":"s3://npm-registry-packages-npm-production"}},"0.19.1":{"name":"iobroker.hannah","version":"0.19.1","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@0.19.1","maintainers":[{"name":"bluefox","email":"dogafox@gmail.com"},{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"1ddcb11ba12961d74bd5f56cd5b4f8a69bbff1be","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-0.19.1.tgz","fileCount":35,"integrity":"sha512-4iX7etG+1wE3as+KI12u/hJYXKBHfTn3aytCoUCOipwaogYPVv2hufdKnfbp6SuWluHJDd2hZZVWtTc3gOvLtQ==","signatures":[{"sig":"MEUCIQCc9Rf8sonYJNHxfjPi2PwOpQD53IPU3WX1iJAgZD8YYAIgPEXIa1Gl/8M/KHgT4mbHSuBZA2FPFRoRfz0Y8hhNyEo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iobroker.hannah@0.19.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":48745374},"main":"build/main.js","engines":{"node":">= 22"},"gitHead":"d20d0fbf4b13d54ed1c312228ca2aec67a752c61","scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all && node -e \"require('fs').mkdirSync('build/proto',{recursive:true});require('fs').copyFileSync('src/proto/hannah.proto','build/proto/hannah.proto')\"","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","prepack":"npm run build","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","verify:package":"node scripts/verify-package-contents.mjs","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:78bd7777-7b60-4a83-a038-49a20401c6b2"}},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.17.0","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"adm-zip":"^0.5.17","@grpc/grpc-js":"^1.14.4","@grpc/proto-loader":"^0.8.1","@iobroker/dm-utils":"^3.0.19","@iobroker/adapter-core":"^3.3.2"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^18.3.1","esptool-js":"^0.6.0","typescript":"~6.0.3","@types/node":"^20.19.41","@types/react":"^18.3.28","@mui/material":"^6.5.0","@emotion/react":"^11.14.0","@types/adm-zip":"^0.5.8","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.1.2","@tsconfig/node22":"^22.0.5","@types/react-dom":"^18.3.7","@iobroker/testing":"^5.2.2","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@m1kad0/esp-nvs-utils":"^0.2.1","@iobroker/eslint-config":"^2.3.4","@alcalzone/release-script":"^5.2.1","@iobroker/adapter-react-v5":"^8.2.7","@alcalzone/release-script-plugin-license":"^5.2.0","@alcalzone/release-script-plugin-iobroker":"^5.2.0","@alcalzone/release-script-plugin-manual-review":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_0.19.1_1781813516505_0.0977126351341715","host":"s3://npm-registry-packages-npm-production"}},"0.20.0":{"name":"iobroker.hannah","version":"0.20.0","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@0.20.0","maintainers":[{"name":"bluefox","email":"dogafox@gmail.com"},{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"3320f6a23add07088662b49959ef3404c052dfc4","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-0.20.0.tgz","fileCount":35,"integrity":"sha512-fkyNLUCJSY+tHGTwc96s3kOgq+FlLWnyYpmgFR/3DhNFovu6T/xaZUcJC9OnsoO7zpSZDV6piBtvVT5uzBSy/g==","signatures":[{"sig":"MEYCIQC1ryOw/PRZ6JKlB4F9DIeejyflRYhG3P2Ix3Go/Y6adgIhAOc4gE7aeble1nU2igF0eDG86GJTaHRUufHGgfhBnG+a","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iobroker.hannah@0.20.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":48744123},"main":"build/main.js","engines":{"node":">= 22"},"gitHead":"6ff920001bfcd0129e54e64c33d74942960c7c97","scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all && node -e \"require('fs').mkdirSync('build/proto',{recursive:true});require('fs').copyFileSync('src/proto/hannah.proto','build/proto/hannah.proto')\"","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","prepack":"npm run build","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","verify:package":"node scripts/verify-package-contents.mjs","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:78bd7777-7b60-4a83-a038-49a20401c6b2"}},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.17.0","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"adm-zip":"^0.5.17","@grpc/grpc-js":"^1.14.4","@grpc/proto-loader":"^0.8.1","@iobroker/dm-utils":"^3.0.19","@iobroker/adapter-core":"^3.3.2"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^18.3.1","esptool-js":"^0.6.0","typescript":"~6.0.3","@types/node":"^20.19.41","@types/react":"^18.3.28","@mui/material":"^6.5.0","@emotion/react":"^11.14.0","@types/adm-zip":"^0.5.8","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.1.2","@tsconfig/node22":"^22.0.5","@types/react-dom":"^18.3.7","@iobroker/testing":"^5.2.2","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@m1kad0/esp-nvs-utils":"^0.2.1","@iobroker/eslint-config":"^2.3.4","@alcalzone/release-script":"^5.2.1","@iobroker/adapter-react-v5":"^8.2.7","@alcalzone/release-script-plugin-license":"^5.2.0","@alcalzone/release-script-plugin-iobroker":"^5.2.0","@alcalzone/release-script-plugin-manual-review":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_0.20.0_1781817005530_0.6270927912726059","host":"s3://npm-registry-packages-npm-production"}},"0.21.0":{"name":"iobroker.hannah","version":"0.21.0","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@0.21.0","maintainers":[{"name":"bluefox","email":"dogafox@gmail.com"},{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"f56e9ac1ae45aee6703b5eb746c37532ca22c57d","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-0.21.0.tgz","fileCount":35,"integrity":"sha512-w4yKYimNmS6vqkL6WUEW2k296k+7sB07jPuMJheS4SRDvoP1TTMUg8qbKEWO9CcXwZNjpIxM8nAUzaQ2t8Jl/A==","signatures":[{"sig":"MEYCIQCZhcMNjangm4zOe2vJWa45aEv3Cv8rR2niQRemLO/rGgIhANI/xJW+c2SWs3wxPpsufUZj/9PNQqY6ldaESowvLd0f","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iobroker.hannah@0.21.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":48749083},"main":"build/main.js","engines":{"node":">= 22"},"gitHead":"11704b01a12f38449af36a6ce97ac03840496260","scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all && node -e \"require('fs').mkdirSync('build/proto',{recursive:true});require('fs').copyFileSync('src/proto/hannah.proto','build/proto/hannah.proto')\"","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","prepack":"npm run build","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","verify:package":"node scripts/verify-package-contents.mjs","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:78bd7777-7b60-4a83-a038-49a20401c6b2"}},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.17.0","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"adm-zip":"^0.5.17","@grpc/grpc-js":"^1.14.4","@grpc/proto-loader":"^0.8.1","@iobroker/dm-utils":"^3.0.19","@iobroker/adapter-core":"^3.3.2"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^18.3.1","esptool-js":"^0.6.0","typescript":"~6.0.3","@types/node":"^20.19.41","@types/react":"^18.3.28","@mui/material":"^6.5.0","@emotion/react":"^11.14.0","@types/adm-zip":"^0.5.8","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.1.2","@tsconfig/node22":"^22.0.5","@types/react-dom":"^18.3.7","@iobroker/testing":"^5.2.2","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@m1kad0/esp-nvs-utils":"^0.2.1","@iobroker/eslint-config":"^2.3.4","@alcalzone/release-script":"^5.2.1","@iobroker/adapter-react-v5":"^8.2.7","@alcalzone/release-script-plugin-license":"^5.2.0","@alcalzone/release-script-plugin-iobroker":"^5.2.0","@alcalzone/release-script-plugin-manual-review":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_0.21.0_1781822115355_0.7963169631858722","host":"s3://npm-registry-packages-npm-production"}},"0.21.1":{"name":"iobroker.hannah","version":"0.21.1","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@0.21.1","maintainers":[{"name":"bluefox","email":"dogafox@gmail.com"},{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"cfa185b1667b6f2d38e81ca2251056564eb315f4","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-0.21.1.tgz","fileCount":35,"integrity":"sha512-HYbwUYGsrlNp+gSBaQse+Kkj8Uc9xrTQoMrZ+1VNTKMj7aClh6I661IJCXjD5lFDZXt0Fus9u5Fejz1g0/IAEQ==","signatures":[{"sig":"MEUCIDJSTatdOF+SNp31S3izwalp0Ed1+yCB+I5k3G46+eIYAiEAhHaq39aTv6DcLYE90bmIb8pPIignsDM1mN8sAOlCyvw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iobroker.hannah@0.21.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":48748479},"main":"build/main.js","engines":{"node":">= 22"},"gitHead":"42407c9623f996f6947fd00d72843d8452e2146c","scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all && node -e \"require('fs').mkdirSync('build/proto',{recursive:true});require('fs').copyFileSync('src/proto/hannah.proto','build/proto/hannah.proto')\"","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","prepack":"npm run build","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","verify:package":"node scripts/verify-package-contents.mjs","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:78bd7777-7b60-4a83-a038-49a20401c6b2"}},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.17.0","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"adm-zip":"^0.5.17","@grpc/grpc-js":"^1.14.4","@grpc/proto-loader":"^0.8.1","@iobroker/dm-utils":"^3.0.19","@iobroker/adapter-core":"^3.3.2"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^18.3.1","esptool-js":"^0.6.0","typescript":"~6.0.3","@types/node":"^20.19.41","@types/react":"^18.3.28","@mui/material":"^6.5.0","@emotion/react":"^11.14.0","@types/adm-zip":"^0.5.8","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.1.2","@tsconfig/node22":"^22.0.5","@types/react-dom":"^18.3.7","@iobroker/testing":"^5.2.2","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@m1kad0/esp-nvs-utils":"^0.2.1","@iobroker/eslint-config":"^2.3.4","@alcalzone/release-script":"^5.2.1","@iobroker/adapter-react-v5":"^8.2.7","@alcalzone/release-script-plugin-license":"^5.2.0","@alcalzone/release-script-plugin-iobroker":"^5.2.0","@alcalzone/release-script-plugin-manual-review":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_0.21.1_1781875747028_0.19057005963006923","host":"s3://npm-registry-packages-npm-production"}},"0.22.0":{"name":"iobroker.hannah","version":"0.22.0","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@0.22.0","maintainers":[{"name":"bluefox","email":"dogafox@gmail.com"},{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"3dd4678a544bcf831f855d253cf60a3a88314b5f","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-0.22.0.tgz","fileCount":35,"integrity":"sha512-prA2q3Y8/UtwfmXi4unJ53zdtb95obvvj4zzyVaxHl3qf5k7nJgK9ewtmqAogT1DRr+4pBX2xCtypwLtE/DiJA==","signatures":[{"sig":"MEUCIQDVKx6Sde4UXcd0ZeQv5Qyjv8s2JPQd3Q7eJ45nkcicugIgH+waFozNHnj9cA2U36vy9flr5mVU7GJQNEhCmo3hxx8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iobroker.hannah@0.22.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":48749382},"main":"build/main.js","engines":{"node":">= 22"},"gitHead":"215822630d1970b510797e771721eaa2d9f2e98e","scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all && node -e \"require('fs').mkdirSync('build/proto',{recursive:true});require('fs').copyFileSync('src/proto/hannah.proto','build/proto/hannah.proto')\"","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","prepack":"npm run build","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","verify:package":"node scripts/verify-package-contents.mjs","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:78bd7777-7b60-4a83-a038-49a20401c6b2"}},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.17.0","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"adm-zip":"^0.5.17","@grpc/grpc-js":"^1.14.4","@grpc/proto-loader":"^0.8.1","@iobroker/dm-utils":"^3.0.19","@iobroker/adapter-core":"^3.3.2"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^18.3.1","esptool-js":"^0.6.0","typescript":"~6.0.3","@types/node":"^20.19.41","@types/react":"^18.3.28","@mui/material":"^6.5.0","@emotion/react":"^11.14.0","@types/adm-zip":"^0.5.8","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.1.2","@tsconfig/node22":"^22.0.5","@types/react-dom":"^18.3.7","@iobroker/testing":"^5.2.2","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@m1kad0/esp-nvs-utils":"^0.2.1","@iobroker/eslint-config":"^2.3.4","@alcalzone/release-script":"^5.2.1","@iobroker/adapter-react-v5":"^8.2.7","@alcalzone/release-script-plugin-license":"^5.2.0","@alcalzone/release-script-plugin-iobroker":"^5.2.0","@alcalzone/release-script-plugin-manual-review":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_0.22.0_1781882722149_0.8389274446139954","host":"s3://npm-registry-packages-npm-production"}},"0.23.0":{"name":"iobroker.hannah","version":"0.23.0","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@0.23.0","maintainers":[{"name":"bluefox","email":"dogafox@gmail.com"},{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"acc6d8a41485317e2735dfeecbbcb68058470e1d","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-0.23.0.tgz","fileCount":35,"integrity":"sha512-FUQJA1BZ9cH09/0gBMBibnuf0Nds0aG4Hgx8koEHj0aPumscd/jVgshY3ADH89zH/e81SCVlW/aiq5MKFHeXoQ==","signatures":[{"sig":"MEYCIQDZr1ciPujZBlbKJUhXEba7VsuEyFgbudkmRsHWDhpDFwIhAMpUtTdhAwNTXh6NQaRg0gVDyEhXtraaF+AeKw8SYHgm","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iobroker.hannah@0.23.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":48786131},"main":"build/main.js","engines":{"node":">= 22"},"gitHead":"7a8cccb2fed5be217d061dbf6e4879ffe08fc223","scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all && node -e \"require('fs').mkdirSync('build/proto',{recursive:true});require('fs').copyFileSync('src/proto/hannah.proto','build/proto/hannah.proto')\"","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","prepack":"npm run build","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","verify:package":"node scripts/verify-package-contents.mjs","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:78bd7777-7b60-4a83-a038-49a20401c6b2"}},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.17.0","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"adm-zip":"^0.5.17","@grpc/grpc-js":"^1.14.4","@grpc/proto-loader":"^0.8.1","@iobroker/dm-utils":"^3.0.19","@iobroker/adapter-core":"^3.3.2"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^18.3.1","esptool-js":"^0.6.0","typescript":"~6.0.3","@types/node":"^20.19.41","@types/react":"^18.3.28","@mui/material":"^6.5.0","@emotion/react":"^11.14.0","@types/adm-zip":"^0.5.8","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.1.2","@tsconfig/node22":"^22.0.5","@types/react-dom":"^18.3.7","@iobroker/testing":"^5.2.2","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@m1kad0/esp-nvs-utils":"^0.2.1","@iobroker/eslint-config":"^2.3.4","@alcalzone/release-script":"^5.2.1","@iobroker/adapter-react-v5":"^8.2.7","@alcalzone/release-script-plugin-license":"^5.2.0","@alcalzone/release-script-plugin-iobroker":"^5.2.0","@alcalzone/release-script-plugin-manual-review":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_0.23.0_1781889025494_0.8932685545624712","host":"s3://npm-registry-packages-npm-production"}},"0.24.0":{"name":"iobroker.hannah","version":"0.24.0","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@0.24.0","maintainers":[{"name":"bluefox","email":"dogafox@gmail.com"},{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"92c6600de75e67f2e0af0b4a754e5b7f18fb0799","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-0.24.0.tgz","fileCount":35,"integrity":"sha512-a+ByQVvfj/BWpru3xYpGLUMYJgfQ/Lu7+5YW18MGLSaLPXYirGACPMIZSjs03JRcQ+vmskSft99MrYOQ38cBZA==","signatures":[{"sig":"MEUCIQD5giitkK0isNQCczRk7+zaTrOi9kv37XwjU7eY+43LPAIgV5X83Kr7D/Rl/v3HukRCVDrND5HlUWXw8iNq8GCmeag=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iobroker.hannah@0.24.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":48787017},"main":"build/main.js","engines":{"node":">= 22"},"gitHead":"b336e9cf2363d8363440b3ddb48b022743b783ea","scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all && node -e \"require('fs').mkdirSync('build/proto',{recursive:true});require('fs').copyFileSync('src/proto/hannah.proto','build/proto/hannah.proto')\"","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","prepack":"npm run build","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","verify:package":"node scripts/verify-package-contents.mjs","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:78bd7777-7b60-4a83-a038-49a20401c6b2"}},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.17.0","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"adm-zip":"^0.5.17","@grpc/grpc-js":"^1.14.4","@grpc/proto-loader":"^0.8.1","@iobroker/dm-utils":"^3.0.19","@iobroker/adapter-core":"^3.3.2"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^18.3.1","esptool-js":"^0.6.0","typescript":"~6.0.3","@types/node":"^20.19.41","@types/react":"^18.3.28","@mui/material":"^6.5.0","@emotion/react":"^11.14.0","@types/adm-zip":"^0.5.8","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.1.2","@tsconfig/node22":"^22.0.5","@types/react-dom":"^18.3.7","@iobroker/testing":"^5.2.2","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@m1kad0/esp-nvs-utils":"^0.2.1","@iobroker/eslint-config":"^2.3.4","@alcalzone/release-script":"^5.2.1","@iobroker/adapter-react-v5":"^8.2.7","@alcalzone/release-script-plugin-license":"^5.2.0","@alcalzone/release-script-plugin-iobroker":"^5.2.0","@alcalzone/release-script-plugin-manual-review":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_0.24.0_1781905289172_0.25461627921385266","host":"s3://npm-registry-packages-npm-production"}},"0.24.1":{"name":"iobroker.hannah","version":"0.24.1","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@0.24.1","maintainers":[{"name":"bluefox","email":"dogafox@gmail.com"},{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"95bf2e32c80e3cb8585ac2627f94f74276034b6a","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-0.24.1.tgz","fileCount":35,"integrity":"sha512-h4ZdPBCBVVRDxCuKZYRX4B/Rh57l96Eg8PGoyRZ2gYtqlHCUlrK8PTQmEp83It8sJGdzsj5bAJm1yOUt/JHw6A==","signatures":[{"sig":"MEUCIQDYyjqv1q2l2qgRLF1YG5faDtvOqapIIJUts8pOMo1crwIgbPZu7ExcF2MgDjfcONbIl0yBVej2XiDmkHtuEGegc8o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iobroker.hannah@0.24.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":48795293},"main":"build/main.js","engines":{"node":">= 22"},"gitHead":"4ff63ab4fd159d98739ac24f5c2df77dbd4c5964","scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all && node -e \"require('fs').mkdirSync('build/proto',{recursive:true});require('fs').copyFileSync('src/proto/hannah.proto','build/proto/hannah.proto')\"","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","prepack":"npm run build","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","verify:package":"node scripts/verify-package-contents.mjs","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:78bd7777-7b60-4a83-a038-49a20401c6b2"}},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.17.0","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"adm-zip":"^0.5.17","@grpc/grpc-js":"^1.14.4","@grpc/proto-loader":"^0.8.1","@iobroker/dm-utils":"^3.0.19","@iobroker/adapter-core":"^3.3.2"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^18.3.1","esptool-js":"^0.6.0","typescript":"~6.0.3","@types/node":"^20.19.41","@types/react":"^18.3.28","@mui/material":"^6.5.0","@emotion/react":"^11.14.0","@types/adm-zip":"^0.5.8","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.1.2","@tsconfig/node22":"^22.0.5","@types/react-dom":"^18.3.7","@iobroker/testing":"^5.2.2","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@m1kad0/esp-nvs-utils":"^0.2.1","@iobroker/eslint-config":"^2.3.4","@alcalzone/release-script":"^5.2.1","@iobroker/adapter-react-v5":"^8.2.7","@alcalzone/release-script-plugin-license":"^5.2.0","@alcalzone/release-script-plugin-iobroker":"^5.2.0","@alcalzone/release-script-plugin-manual-review":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_0.24.1_1781955477688_0.28039472567807655","host":"s3://npm-registry-packages-npm-production"}},"0.25.0":{"name":"iobroker.hannah","version":"0.25.0","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@0.25.0","maintainers":[{"name":"bluefox","email":"dogafox@gmail.com"},{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"b682ead637ac09bc535466cbb65078cf6dfcd6f3","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-0.25.0.tgz","fileCount":35,"integrity":"sha512-wbQa8s7vICSdzmIzr60Ab3cxHDJ2QmAlnNw6RyD7u6/NFGHM9JzHGquDz/u/VYFfMum0/s6WJdEw4OVLU/u+tw==","signatures":[{"sig":"MEYCIQDzpMvMCUqjodoM0wBLTeHmTmeLdxY0J6ZWV7FSMuRP6gIhAJvRY4BtfHWMmhG+fh7Qfm/WvWvHQBAfMxGAyOw/185r","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iobroker.hannah@0.25.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":48792752},"main":"build/main.js","engines":{"node":">= 22"},"gitHead":"01e36e3b5b2bebe9daadefd95381e0c378e71de0","scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all && node -e \"require('fs').mkdirSync('build/proto',{recursive:true});require('fs').copyFileSync('src/proto/hannah.proto','build/proto/hannah.proto')\"","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","prepack":"npm run build","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","verify:package":"node scripts/verify-package-contents.mjs","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:78bd7777-7b60-4a83-a038-49a20401c6b2"}},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.17.0","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"adm-zip":"^0.5.17","@grpc/grpc-js":"^1.14.4","@grpc/proto-loader":"^0.8.1","@iobroker/dm-utils":"^3.0.19","@iobroker/adapter-core":"^3.3.2"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^18.3.1","esptool-js":"^0.6.0","typescript":"~6.0.3","@types/node":"^20.19.41","@types/react":"^18.3.28","@mui/material":"^6.5.0","@emotion/react":"^11.14.0","@types/adm-zip":"^0.5.8","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.1.2","@tsconfig/node22":"^22.0.5","@types/react-dom":"^18.3.7","@iobroker/testing":"^5.2.2","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@m1kad0/esp-nvs-utils":"^0.2.1","@iobroker/eslint-config":"^2.3.4","@alcalzone/release-script":"^5.2.1","@iobroker/adapter-react-v5":"^8.2.7","@alcalzone/release-script-plugin-license":"^5.2.0","@alcalzone/release-script-plugin-iobroker":"^5.2.0","@alcalzone/release-script-plugin-manual-review":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_0.25.0_1781978034367_0.9843291936585605","host":"s3://npm-registry-packages-npm-production"}},"0.26.0":{"name":"iobroker.hannah","version":"0.26.0","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@0.26.0","maintainers":[{"name":"bluefox","email":"dogafox@gmail.com"},{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"908a8bd8e78df7f3369d4932e095bb54960e2d0f","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-0.26.0.tgz","fileCount":35,"integrity":"sha512-tt1KfS2kJDaMxdW86/ixwEPy67RkegmO7tGs/8QM4OfJJm0MPyzqBHQKITyaCKRIskw/L1wbCfgqYYJSFJLinw==","signatures":[{"sig":"MEYCIQCzNkLGdod26VQZAc42J4Sp5qfddwAlYHAZeEvyc9xhAwIhAP3fuowNEQ6YF2gb4Ej6nOYrohNWx+ewH34r0Ez0wxqE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iobroker.hannah@0.26.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":48797406},"main":"build/main.js","engines":{"node":">= 22"},"gitHead":"6931b3cdde94665d473664fbe67bf60f3b9192e0","scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all && node -e \"require('fs').mkdirSync('build/proto',{recursive:true});require('fs').copyFileSync('src/proto/hannah.proto','build/proto/hannah.proto')\"","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","prepack":"npm run build","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","verify:package":"node scripts/verify-package-contents.mjs","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:78bd7777-7b60-4a83-a038-49a20401c6b2"}},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.17.0","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"adm-zip":"^0.5.17","@grpc/grpc-js":"^1.14.4","@grpc/proto-loader":"^0.8.1","@iobroker/dm-utils":"^3.0.19","@iobroker/adapter-core":"^3.3.2"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^18.3.1","esptool-js":"^0.6.0","typescript":"~6.0.3","@types/node":"^20.19.41","@types/react":"^18.3.28","@mui/material":"^6.5.0","@emotion/react":"^11.14.0","@types/adm-zip":"^0.5.8","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.1.2","@tsconfig/node22":"^22.0.5","@types/react-dom":"^18.3.7","@iobroker/testing":"^5.2.2","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@m1kad0/esp-nvs-utils":"^0.2.1","@iobroker/eslint-config":"^2.3.4","@alcalzone/release-script":"^5.2.1","@iobroker/adapter-react-v5":"^8.2.7","@alcalzone/release-script-plugin-license":"^5.2.0","@alcalzone/release-script-plugin-iobroker":"^5.2.0","@alcalzone/release-script-plugin-manual-review":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_0.26.0_1782041605596_0.20880638067798207","host":"s3://npm-registry-packages-npm-production"}},"0.26.1":{"name":"iobroker.hannah","version":"0.26.1","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@0.26.1","maintainers":[{"name":"bluefox","email":"dogafox@gmail.com"},{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"c59190d7a218c8ef7c1ad29cd8527e706ab6e213","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-0.26.1.tgz","fileCount":35,"integrity":"sha512-Jz5CmeHykhsiTM2fzMI1BkYtCSceATQA+ht8EZ0NQXv9wNYk9LmkOQRtry86w6FP9tZ6K5Yf/ThdZT3hLZcFjQ==","signatures":[{"sig":"MEQCIEVCCtXh5tc9sRvXPWEdbW+W5GoTcpi2fy3t6t44BIxpAiAHRgqqrAe9fHH1keHmHL638qv894YIcECQ2nHscFeyWg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iobroker.hannah@0.26.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":48802280},"main":"build/main.js","engines":{"node":">= 22"},"gitHead":"4df7175ec32bab6de057ed80e025c639142bed2c","scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all && node -e \"require('fs').mkdirSync('build/proto',{recursive:true});require('fs').copyFileSync('src/proto/hannah.proto','build/proto/hannah.proto')\"","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","prepack":"npm run build","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","verify:package":"node scripts/verify-package-contents.mjs","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:78bd7777-7b60-4a83-a038-49a20401c6b2"}},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.17.0","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"adm-zip":"^0.5.17","@grpc/grpc-js":"^1.14.4","@grpc/proto-loader":"^0.8.1","@iobroker/dm-utils":"^3.0.19","@iobroker/adapter-core":"^3.3.2"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^18.3.1","esptool-js":"^0.6.0","typescript":"~6.0.3","@types/node":"^20.19.41","@types/react":"^18.3.28","@mui/material":"^6.5.0","@emotion/react":"^11.14.0","@types/adm-zip":"^0.5.8","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.1.2","@tsconfig/node22":"^22.0.5","@types/react-dom":"^18.3.7","@iobroker/testing":"^5.2.2","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@m1kad0/esp-nvs-utils":"^0.2.1","@iobroker/eslint-config":"^2.3.4","@alcalzone/release-script":"^5.2.1","@iobroker/adapter-react-v5":"^8.2.7","@alcalzone/release-script-plugin-license":"^5.2.0","@alcalzone/release-script-plugin-iobroker":"^5.2.0","@alcalzone/release-script-plugin-manual-review":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_0.26.1_1782385408521_0.5345934936046048","host":"s3://npm-registry-packages-npm-production"}},"0.27.0":{"name":"iobroker.hannah","version":"0.27.0","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@0.27.0","maintainers":[{"name":"bluefox","email":"dogafox@gmail.com"},{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"f39c5859599f6deaf6fa3594dc3e18681f6ae785","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-0.27.0.tgz","fileCount":37,"integrity":"sha512-R46pRiuWAeKqhg/IKgg99CkSU4Ig64uzmkhWfKgeTHAtfk621DwCMGp7JqaJJWsp8rwu9J4VkZishFxHrSbAJQ==","signatures":[{"sig":"MEYCIQDKOaX8vJNJ2+bDj7m30nGcODQbAefKus9DaaFu336NnwIhAO3vyTzfGokbOxcloZSoq5/dOaq0boV4eiP9Ki584dy/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iobroker.hannah@0.27.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":48825732},"main":"build/main.js","engines":{"node":">= 22"},"gitHead":"18d7558edf6a6a94764c7bb41c90ce43959d3aa9","scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all && node -e \"require('fs').mkdirSync('build/proto',{recursive:true});require('fs').copyFileSync('src/proto/hannah.proto','build/proto/hannah.proto')\"","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","prepack":"npm run build","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","verify:package":"node scripts/verify-package-contents.mjs","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:78bd7777-7b60-4a83-a038-49a20401c6b2"}},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.17.0","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"adm-zip":"^0.5.17","@grpc/grpc-js":"^1.14.4","@grpc/proto-loader":"^0.8.1","@iobroker/dm-utils":"^3.0.19","@iobroker/adapter-core":"^3.4.1"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^18.3.1","esptool-js":"^0.6.0","typescript":"~6.0.3","@types/node":"^20.19.41","@types/react":"^18.3.28","@mui/material":"^6.5.0","@emotion/react":"^11.14.0","@types/adm-zip":"^0.5.8","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.2.2","@tsconfig/node22":"^22.0.5","@types/react-dom":"^18.3.7","@iobroker/testing":"^5.2.2","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@m1kad0/esp-nvs-utils":"0.2.1","@iobroker/eslint-config":"^2.3.4","@alcalzone/release-script":"^5.2.1","@iobroker/adapter-react-v5":"^8.2.7","@alcalzone/release-script-plugin-license":"^5.2.0","@alcalzone/release-script-plugin-iobroker":"^5.2.0","@alcalzone/release-script-plugin-manual-review":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_0.27.0_1782434611698_0.21739505274220994","host":"s3://npm-registry-packages-npm-production"}},"0.27.1":{"name":"iobroker.hannah","version":"0.27.1","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@0.27.1","maintainers":[{"name":"bluefox","email":"dogafox@gmail.com"},{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"bb4baacb7970319740af20afa9aa4c6afe03df67","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-0.27.1.tgz","fileCount":37,"integrity":"sha512-0w/XRZLCZ8c8LWU2Z6Z4BNofRxkxP8FNHd6rczNL+KW4Sd3xbpKed5MHwIB324JFZbu2SdKvT28kGVKdQpQiXg==","signatures":[{"sig":"MEQCIDnWftXbw9Grx9BkrVtsNJMRoHVZj5VlSEaPbLbefdOYAiBctHlPegdUhymTvGOz+bdbv1PeYW7TLc1G6fwIX0O5NA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iobroker.hannah@0.27.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":48839877},"main":"build/main.js","engines":{"node":">= 22"},"gitHead":"7c16c478d3b2c571c45f0d828e51bb002c9da878","scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all && node -e \"require('fs').mkdirSync('build/proto',{recursive:true});require('fs').copyFileSync('src/proto/hannah.proto','build/proto/hannah.proto')\"","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","prepack":"npm run build","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","verify:package":"node scripts/verify-package-contents.mjs","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:78bd7777-7b60-4a83-a038-49a20401c6b2"}},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.17.0","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"adm-zip":"^0.5.17","@grpc/grpc-js":"^1.14.4","@grpc/proto-loader":"^0.8.1","@iobroker/dm-utils":"^3.0.19","@iobroker/adapter-core":"^3.4.1"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^18.3.1","esptool-js":"^0.6.0","typescript":"~6.0.3","@types/node":"^20.19.41","@types/react":"^18.3.28","@mui/material":"^6.5.0","@emotion/react":"^11.14.0","@types/adm-zip":"^0.5.8","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.2.2","@tsconfig/node22":"^22.0.5","@types/react-dom":"^18.3.7","@iobroker/testing":"^5.2.2","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@m1kad0/esp-nvs-utils":"0.2.1","@iobroker/eslint-config":"^2.3.4","@alcalzone/release-script":"^5.2.1","@iobroker/adapter-react-v5":"^8.2.7","@alcalzone/release-script-plugin-license":"^5.2.0","@alcalzone/release-script-plugin-iobroker":"^5.2.0","@alcalzone/release-script-plugin-manual-review":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_0.27.1_1782581945766_0.6450296825496542","host":"s3://npm-registry-packages-npm-production"}},"0.28.0":{"name":"iobroker.hannah","version":"0.28.0","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@0.28.0","maintainers":[{"name":"bluefox","email":"dogafox@gmail.com"},{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"9265118fb105dd5bc07b34a1535381b4e28c8366","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-0.28.0.tgz","fileCount":37,"integrity":"sha512-4qw7qpcngv4OIP89g1T4hKonYxHJSUVw3dW8V5F8W67IHwDDGONhsKGKOERluvYnAzMfCb11R1h48aQqshhK0w==","signatures":[{"sig":"MEYCIQCY3yA9grCvJ5QQtVq5tA9Zx4Ekuh4Q1jd+2OD+E0F0zgIhAIG2zQgPt45SJwZ8xL/Q+J+40oH8Y4kzZwP1yEGGrn8d","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iobroker.hannah@0.28.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":48843537},"main":"build/main.js","engines":{"node":">= 22"},"gitHead":"16ea389d23ccad8c044698e24b424b752e305b9b","scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all && node -e \"require('fs').mkdirSync('build/proto',{recursive:true});require('fs').copyFileSync('src/proto/hannah.proto','build/proto/hannah.proto')\"","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","prepack":"npm run build","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","verify:package":"node scripts/verify-package-contents.mjs","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:78bd7777-7b60-4a83-a038-49a20401c6b2"}},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.18.0","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"adm-zip":"^0.5.17","@grpc/grpc-js":"^1.14.4","@grpc/proto-loader":"^0.8.1","@iobroker/dm-utils":"^3.0.19","@iobroker/adapter-core":"^3.4.1"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^18.3.1","esptool-js":"^0.6.0","typescript":"~6.0.3","@types/node":"^20.19.41","@types/react":"^18.3.28","@mui/material":"^6.5.0","@emotion/react":"^11.14.0","@types/adm-zip":"^0.5.8","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.2.2","@tsconfig/node22":"^22.0.5","@types/react-dom":"^18.3.7","@iobroker/testing":"^5.2.2","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@m1kad0/esp-nvs-utils":"0.2.1","@iobroker/eslint-config":"^2.3.4","@alcalzone/release-script":"^5.2.1","@iobroker/adapter-react-v5":"^8.2.7","@alcalzone/release-script-plugin-license":"^5.2.0","@alcalzone/release-script-plugin-iobroker":"^5.2.0","@alcalzone/release-script-plugin-manual-review":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_0.28.0_1782770076073_0.3105918867946136","host":"s3://npm-registry-packages-npm-production"}},"0.29.0":{"name":"iobroker.hannah","version":"0.29.0","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@0.29.0","maintainers":[{"name":"bluefox","email":"dogafox@gmail.com"},{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"7809e413070fefc0f28346f986790a50bbc5b766","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-0.29.0.tgz","fileCount":37,"integrity":"sha512-BE5wyzsmv2AUi7EscADWJxP7u60x58KJCpmrpklxzqgdb7iEpYPeWahvxciYz5ZZ8wreM4hoAcclSgNsX0BylQ==","signatures":[{"sig":"MEUCIHSleKFn3FnokiYXNtMykuvZsxovmJ7xtdFiLzOuvxsaAiEA93YX+b8/nIJUyJ8UMolSdzax7mBghljYqEeouguiH+s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iobroker.hannah@0.29.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":48857732},"main":"build/main.js","engines":{"node":">= 22"},"gitHead":"30e546a00aeeb17bb37ccae2647f186ae573ed3b","scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all && node -e \"require('fs').mkdirSync('build/proto',{recursive:true});require('fs').copyFileSync('src/proto/hannah.proto','build/proto/hannah.proto')\"","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","prepack":"npm run build","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","verify:package":"node scripts/verify-package-contents.mjs","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:78bd7777-7b60-4a83-a038-49a20401c6b2"}},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.18.0","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"adm-zip":"^0.5.17","@grpc/grpc-js":"^1.14.4","@grpc/proto-loader":"^0.8.1","@iobroker/dm-utils":"^3.0.19","@iobroker/adapter-core":"^3.4.1"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^18.3.1","esptool-js":"^0.6.0","typescript":"~6.0.3","@types/node":"^20.19.41","@types/react":"^18.3.28","@mui/material":"^6.5.0","@emotion/react":"^11.14.0","@types/adm-zip":"^0.5.8","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.2.2","@tsconfig/node22":"^22.0.5","@types/react-dom":"^18.3.7","@iobroker/testing":"^5.2.2","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@m1kad0/esp-nvs-utils":"0.2.1","@iobroker/eslint-config":"^2.3.4","@alcalzone/release-script":"^5.2.1","@iobroker/adapter-react-v5":"^8.2.7","@alcalzone/release-script-plugin-license":"^5.2.0","@alcalzone/release-script-plugin-iobroker":"^5.2.0","@alcalzone/release-script-plugin-manual-review":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_0.29.0_1782832501477_0.029466824778018985","host":"s3://npm-registry-packages-npm-production"}},"0.29.1":{"name":"iobroker.hannah","version":"0.29.1","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@0.29.1","maintainers":[{"name":"bluefox","email":"dogafox@gmail.com"},{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"bb86b0b675ea3ac049728cbb50723d3c9496db1d","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-0.29.1.tgz","fileCount":37,"integrity":"sha512-zNCPucBG958S0g5iaHYMN9eqjm1x6YfY/psKg6WGWocbiDwXYjxy3+anOcOWebTOr3yr5x3ZrvTlk4WveQprXA==","signatures":[{"sig":"MEUCIDqErSp9H5lJk1QZuwLNGaedayOmi7/gsqAA/fvcoaulAiEAsiu1o5616bvvpxhV13vDzcwmnXWHegQ03AovPkgyeuw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iobroker.hannah@0.29.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":48850594},"main":"build/main.js","engines":{"node":">= 22"},"gitHead":"c5fcaed9753e346bce2e436eef1d5deb602ce567","scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all && node -e \"require('fs').mkdirSync('build/proto',{recursive:true});require('fs').copyFileSync('src/proto/hannah.proto','build/proto/hannah.proto')\"","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","prepack":"npm run build","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","verify:package":"node scripts/verify-package-contents.mjs","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:78bd7777-7b60-4a83-a038-49a20401c6b2"}},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.18.0","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"adm-zip":"^0.5.17","@grpc/grpc-js":"^1.14.4","@grpc/proto-loader":"^0.8.1","@iobroker/dm-utils":"^3.0.19","@iobroker/adapter-core":"^3.4.1"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^18.3.1","esptool-js":"^0.6.0","typescript":"~6.0.3","@types/node":"^20.19.41","@types/react":"^18.3.28","@mui/material":"^6.5.0","@emotion/react":"^11.14.0","@types/adm-zip":"^0.5.8","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.2.2","@tsconfig/node22":"^22.0.5","@types/react-dom":"^18.3.7","@iobroker/testing":"^5.2.2","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@m1kad0/esp-nvs-utils":"0.2.1","@iobroker/eslint-config":"^2.3.4","@alcalzone/release-script":"^5.2.1","@iobroker/adapter-react-v5":"^8.2.7","@alcalzone/release-script-plugin-license":"^5.2.0","@alcalzone/release-script-plugin-iobroker":"^5.2.0","@alcalzone/release-script-plugin-manual-review":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_0.29.1_1782834709750_0.16220565705028256","host":"s3://npm-registry-packages-npm-production"}},"0.29.2":{"name":"iobroker.hannah","version":"0.29.2","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@0.29.2","maintainers":[{"name":"bluefox","email":"dogafox@gmail.com"},{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"01867bea4565c3d921c6bb8c1490fb263070390c","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-0.29.2.tgz","fileCount":37,"integrity":"sha512-VruV/yyU+at8ZTqrqKLs73eoB1Kql1pDzvDtMszVeKZG9/xpHIPUyuUd0vIPfrD5YqjOcUlHFksp2fFWnNgdRw==","signatures":[{"sig":"MEUCIEkdquMH+wRF6aCY9sNvJnpFx4OTT/KPhL3xRn9FxHG7AiEA7HOY3CCH0fu/jYTRZJcoeZ0jAYSr3rNlWLtJDNvB3VU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iobroker.hannah@0.29.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":48852128},"main":"build/main.js","engines":{"node":">= 22"},"gitHead":"6b11da061add9895349a52fdf8cb1567bb3acf54","scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all && node -e \"require('fs').mkdirSync('build/proto',{recursive:true});require('fs').copyFileSync('src/proto/hannah.proto','build/proto/hannah.proto')\"","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","prepack":"npm run build","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","verify:package":"node scripts/verify-package-contents.mjs","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:78bd7777-7b60-4a83-a038-49a20401c6b2"}},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.18.0","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"adm-zip":"^0.5.17","@grpc/grpc-js":"^1.14.4","@grpc/proto-loader":"^0.8.1","@iobroker/dm-utils":"^3.0.19","@iobroker/adapter-core":"^3.4.1"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^18.3.1","esptool-js":"^0.6.0","typescript":"~6.0.3","@types/node":"^20.19.41","@types/react":"^18.3.28","@mui/material":"^6.5.0","@emotion/react":"^11.14.0","@types/adm-zip":"^0.5.8","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.2.2","@tsconfig/node22":"^22.0.5","@types/react-dom":"^18.3.7","@iobroker/testing":"^5.2.2","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@m1kad0/esp-nvs-utils":"0.2.1","@iobroker/eslint-config":"^2.3.4","@alcalzone/release-script":"^5.2.1","@iobroker/adapter-react-v5":"^8.2.7","@alcalzone/release-script-plugin-license":"^5.2.0","@alcalzone/release-script-plugin-iobroker":"^5.2.0","@alcalzone/release-script-plugin-manual-review":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_0.29.2_1782839445521_0.38054340244131035","host":"s3://npm-registry-packages-npm-production"}},"0.30.0":{"name":"iobroker.hannah","version":"0.30.0","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@0.30.0","maintainers":[{"name":"bluefox","email":"dogafox@gmail.com"},{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"909791eba58bc7488f1f6d75a2f7a99414a00408","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-0.30.0.tgz","fileCount":37,"integrity":"sha512-ZSR/xzQyWLJJra1YK5Ck7FE95fbFD7GOtUSqiFfO33/4P0fAcB8H+9KbhbW2lRqiUJopQYE8iCl0MSM3Hslxog==","signatures":[{"sig":"MEYCIQDECFndk6qcPQExQsJ3ihuhm72MunFWbSOWSHmrIlgtUwIhAI7AEkTKX/+tN6lsGiltJJSCkuCXgVyb7stEh59oYzXZ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iobroker.hannah@0.30.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":48852854},"main":"build/main.js","engines":{"node":">= 22"},"gitHead":"bcfbb0538ebd7020ec6e681e4f2aa2071a165886","scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all && node -e \"require('fs').mkdirSync('build/proto',{recursive:true});require('fs').copyFileSync('src/proto/hannah.proto','build/proto/hannah.proto')\"","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","prepack":"npm run build","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","verify:package":"node scripts/verify-package-contents.mjs","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:78bd7777-7b60-4a83-a038-49a20401c6b2"}},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.18.0","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"adm-zip":"^0.5.17","@grpc/grpc-js":"^1.14.4","@grpc/proto-loader":"^0.8.1","@iobroker/dm-utils":"^3.0.19","@iobroker/adapter-core":"^3.4.1"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^18.3.1","esptool-js":"^0.6.0","typescript":"~6.0.3","@types/node":"^20.19.41","@types/react":"^18.3.28","@mui/material":"^6.5.0","@emotion/react":"^11.14.0","@types/adm-zip":"^0.5.8","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.2.2","@tsconfig/node22":"^22.0.5","@types/react-dom":"^18.3.7","@iobroker/testing":"^5.2.2","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@m1kad0/esp-nvs-utils":"0.2.1","@iobroker/eslint-config":"^2.3.4","@alcalzone/release-script":"^5.2.1","@iobroker/adapter-react-v5":"^8.2.7","@alcalzone/release-script-plugin-license":"^5.2.0","@alcalzone/release-script-plugin-iobroker":"^5.2.0","@alcalzone/release-script-plugin-manual-review":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_0.30.0_1783032205124_0.799323183669215","host":"s3://npm-registry-packages-npm-production"}},"0.30.1":{"name":"iobroker.hannah","version":"0.30.1","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@0.30.1","maintainers":[{"name":"bluefox","email":"dogafox@gmail.com"},{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"96b5ed86bbfe2192b5b4f8f00668b8d8e09eee58","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-0.30.1.tgz","fileCount":49,"integrity":"sha512-j5LzEboxw4LmcrJZyr/BC1VOa6AyBlh+6TbFN/Y/qP0+Mee567brlB+5d8cNaOu62LSRnhTQrQomOQ3PpnYxEw==","signatures":[{"sig":"MEUCIGcnE53Al1PaMPTkjefgoW1p9XzJ3asByFiG9FeWpsbVAiEAiDMHoO8pVEXPWNnwtltWO45dSHnN9IsRrZmGHGuOGO8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iobroker.hannah@0.30.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":48858742},"main":"build/main.js","engines":{"node":">= 22"},"gitHead":"a4c370655f57554e59ed222d0cc03b3b63f8c1ca","scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all && node -e \"const fs=require('fs');fs.mkdirSync('build/proto',{recursive:true});for(const f of fs.readdirSync('src/proto').filter(f=>f.endsWith('.proto')))fs.copyFileSync('src/proto/'+f,'build/proto/'+f)\"","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","prepack":"npm run build","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","verify:package":"node scripts/verify-package-contents.mjs","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:78bd7777-7b60-4a83-a038-49a20401c6b2"}},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.18.0","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"adm-zip":"^0.5.17","@grpc/grpc-js":"^1.14.4","@grpc/proto-loader":"^0.8.1","@iobroker/dm-utils":"^3.0.19","@iobroker/adapter-core":"^3.4.1"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^18.3.1","esptool-js":"^0.6.0","typescript":"~6.0.3","@types/node":"^20.19.41","@types/react":"^18.3.28","@mui/material":"^6.5.0","@emotion/react":"^11.14.0","@types/adm-zip":"^0.5.8","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.2.2","@tsconfig/node22":"^22.0.5","@types/react-dom":"^18.3.7","@iobroker/testing":"^5.2.2","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@m1kad0/esp-nvs-utils":"0.2.1","@iobroker/eslint-config":"^2.3.4","@alcalzone/release-script":"^5.2.1","@iobroker/adapter-react-v5":"^8.2.7","@alcalzone/release-script-plugin-license":"^5.2.0","@alcalzone/release-script-plugin-iobroker":"^5.2.0","@alcalzone/release-script-plugin-manual-review":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_0.30.1_1783109546714_0.8582028969895743","host":"s3://npm-registry-packages-npm-production"}},"0.30.2":{"name":"iobroker.hannah","version":"0.30.2","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@0.30.2","maintainers":[{"name":"bluefox","email":"dogafox@gmail.com"},{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"2c85697bd909b00e3fabb1d1a607efeb102cef86","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-0.30.2.tgz","fileCount":50,"integrity":"sha512-Jwm9ADSpBsNeqtOK7QbVkCRrJeLew6rwp/UrqlHkJ7PeJq9JxDWQSoey47eQsGIx864TSTtopNKMH75R6AmLjA==","signatures":[{"sig":"MEUCIQDnPuPYrmsiy/665g+qPfZje/8klQrXwOVaifofCXw/ggIga7dNUDvtEKdMcigZxL4vqqlu6PXl0F2zBhGGF7vL/qQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iobroker.hannah@0.30.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":48852030},"main":"build/main.js","engines":{"node":">= 22"},"gitHead":"5d72ef4adf475003b0a7ba53e49d1ae06610c8d7","scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all && node -e \"const fs=require('fs');fs.mkdirSync('build/proto',{recursive:true});for(const f of fs.readdirSync('src/proto').filter(f=>f.endsWith('.proto')||f==='PROTO_VERSION'))fs.copyFileSync('src/proto/'+f,'build/proto/'+f)\"","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","prepack":"npm run build","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","verify:package":"node scripts/verify-package-contents.mjs","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:78bd7777-7b60-4a83-a038-49a20401c6b2"}},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.18.0","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"adm-zip":"^0.5.17","@grpc/grpc-js":"^1.14.4","@grpc/proto-loader":"^0.8.1","@iobroker/dm-utils":"^3.0.19","@iobroker/adapter-core":"^3.4.1"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^18.3.1","esptool-js":"^0.6.0","typescript":"~6.0.3","@types/node":"^20.19.41","@types/react":"^18.3.28","@mui/material":"^6.5.0","@emotion/react":"^11.14.0","@types/adm-zip":"^0.5.8","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.2.2","@tsconfig/node22":"^22.0.5","@types/react-dom":"^18.3.7","@iobroker/testing":"^5.2.2","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@m1kad0/esp-nvs-utils":"0.2.1","@iobroker/eslint-config":"^2.3.4","@alcalzone/release-script":"^5.2.1","@iobroker/adapter-react-v5":"^8.2.7","@alcalzone/release-script-plugin-license":"^5.2.0","@alcalzone/release-script-plugin-iobroker":"^5.2.0","@alcalzone/release-script-plugin-manual-review":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_0.30.2_1783203366253_0.17551961222327006","host":"s3://npm-registry-packages-npm-production"}},"0.30.3":{"name":"iobroker.hannah","version":"0.30.3","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@0.30.3","maintainers":[{"name":"bluefox","email":"dogafox@gmail.com"},{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"f2461ba2abab57b5dd0f13882a82ffb15cadcd13","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-0.30.3.tgz","fileCount":36,"integrity":"sha512-zNqmBwmZe5VxNqqCOCHUJ34MCESBsvTbmUI92fY/DRm0bxrXKQDXUnQYESREVRtXC6N/hXn+BkJv842CVCCZAw==","signatures":[{"sig":"MEQCIQD5JDZ631NU4hfFEmRqjkZzmQ4wOdqyhgeMb9/Rbev7HwIfJtTXnjUElOWRec0r16RcaeMRC7AHN987VB8lrnFtnA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iobroker.hannah@0.30.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":48800042},"main":"build/main.js","engines":{"node":">= 22"},"gitHead":"1c3c34bfac43cf0be73ed5727e0d42a822424fb0","scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","prepack":"npm run build","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","verify:package":"node scripts/verify-package-contents.mjs","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:78bd7777-7b60-4a83-a038-49a20401c6b2"}},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.18.0","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"adm-zip":"^0.5.17","@grpc/grpc-js":"^1.14.4","@iobroker/dm-utils":"^3.0.19","@m1kad0/hannah-proto":"^0.3.6","@iobroker/adapter-core":"^3.4.1"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^18.3.1","esptool-js":"^0.6.0","typescript":"~6.0.3","@types/node":"^20.19.41","@types/react":"^18.3.28","@mui/material":"^6.5.0","@emotion/react":"^11.14.0","@types/adm-zip":"^0.5.8","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.2.2","@tsconfig/node22":"^22.0.5","@types/react-dom":"^18.3.7","@iobroker/testing":"^5.2.2","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@m1kad0/esp-nvs-utils":"0.2.1","@iobroker/eslint-config":"^2.3.4","@alcalzone/release-script":"^5.2.1","@iobroker/adapter-react-v5":"^8.2.7","@alcalzone/release-script-plugin-license":"^5.2.0","@alcalzone/release-script-plugin-iobroker":"^5.2.0","@alcalzone/release-script-plugin-manual-review":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_0.30.3_1783257156746_0.17077495365554585","host":"s3://npm-registry-packages-npm-production"}},"0.31.0":{"name":"iobroker.hannah","version":"0.31.0","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@0.31.0","maintainers":[{"name":"bluefox","email":"dogafox@gmail.com"},{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"af05f3f1d1184fed5b6ddba38fb6fd7196bbdada","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-0.31.0.tgz","fileCount":36,"integrity":"sha512-6cHquADog+k1G+GoQpXXt5V3p7flzPCJECDr1RE2mbGB7LBFkOiB20IZ6oggSTPCsFifGdlnItx9+zHEng0mDg==","signatures":[{"sig":"MEUCIQDmy3xmGa/tKDYaVH4HXcAqBvYOue5as9WhEIxtoDd02gIge1Vp45ZNfmCUT1jLqV9T0HFafKo8Gt5xrOrx3Pw+BUo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iobroker.hannah@0.31.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":49529828},"main":"build/main.js","engines":{"node":">= 22"},"gitHead":"df22780147823829aaa95c189ec6046850521d7b","scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","prepack":"npm run build","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","test:unit":"npm run test:ts","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","verify:package":"node scripts/verify-package-contents.mjs","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:78bd7777-7b60-4a83-a038-49a20401c6b2"}},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.18.0","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"adm-zip":"^0.5.18","@grpc/grpc-js":"^1.14.4","@iobroker/dm-utils":"^3.0.19","@m1kad0/hannah-proto":"^0.3.6","@iobroker/adapter-core":"^3.4.1"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^18.3.1","esptool-js":"^0.6.0","typescript":"~6.0.3","@types/node":"^20.19.41","@types/react":"^18.3.28","@mui/material":"^6.5.0","@emotion/react":"^11.14.0","@types/adm-zip":"^0.5.8","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.2.2","@tsconfig/node22":"^22.0.5","@types/react-dom":"^18.3.7","@iobroker/testing":"^5.2.2","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@m1kad0/esp-nvs-utils":"0.2.1","@iobroker/eslint-config":"^2.3.4","@alcalzone/release-script":"^5.2.1","@iobroker/adapter-react-v5":"^8.2.13","@alcalzone/release-script-plugin-license":"^5.2.0","@alcalzone/release-script-plugin-iobroker":"^5.2.0","@alcalzone/release-script-plugin-manual-review":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_0.31.0_1783528011942_0.7602065145695889","host":"s3://npm-registry-packages-npm-production"}},"0.31.1":{"name":"iobroker.hannah","version":"0.31.1","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@0.31.1","maintainers":[{"name":"bluefox","email":"dogafox@gmail.com"},{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"ac2986014e35da64e9482dfb43f09c146b5fa5e3","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-0.31.1.tgz","fileCount":36,"integrity":"sha512-in4TXrBjlSeEM/qonASj4vjNBnhyq/fQHir8kmHJstvcMcL/B+d4cHatwPiP2pn3z5WkoxK66feToIYjlt1UNw==","signatures":[{"sig":"MEUCIQDj4RDHp+xIEyn1KU5qUwAFToROeNCOdjQeNbBb+EnbuAIgT2Tk+f+Kx12w4wQDChMoCOxH1XgWaoD8U7KUVvVdLkk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iobroker.hannah@0.31.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":49537515},"main":"build/main.js","engines":{"node":">= 22"},"gitHead":"80900cc2d6a6f2022a8c4c164c97767c520e29dc","scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","prepack":"npm run build","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","test:unit":"npm run test:ts","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","verify:package":"node scripts/verify-package-contents.mjs","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:78bd7777-7b60-4a83-a038-49a20401c6b2"}},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.18.0","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"adm-zip":"^0.5.18","@grpc/grpc-js":"^1.14.4","@iobroker/dm-utils":"^3.0.19","@m1kad0/hannah-proto":"^0.3.6","@iobroker/adapter-core":"^3.4.1"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^18.3.1","esptool-js":"^0.6.0","typescript":"~6.0.3","@types/node":"^20.19.41","@types/react":"^18.3.28","@mui/material":"^6.5.0","@emotion/react":"^11.14.0","@types/adm-zip":"^0.5.8","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.2.2","@tsconfig/node22":"^22.0.5","@types/react-dom":"^18.3.7","@iobroker/testing":"^5.2.2","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@m1kad0/esp-nvs-utils":"0.2.1","@iobroker/eslint-config":"^2.3.4","@alcalzone/release-script":"^5.2.1","@iobroker/adapter-react-v5":"^8.2.13","@alcalzone/release-script-plugin-license":"^5.2.0","@alcalzone/release-script-plugin-iobroker":"^5.2.0","@alcalzone/release-script-plugin-manual-review":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_0.31.1_1783544434455_0.4080289356371789","host":"s3://npm-registry-packages-npm-production"}},"0.31.3":{"name":"iobroker.hannah","version":"0.31.3","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@0.31.3","maintainers":[{"name":"bluefox","email":"dogafox@gmail.com"},{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"f49645c81e885bc6ca10fca245f07b5fda6f91f7","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-0.31.3.tgz","fileCount":36,"integrity":"sha512-wdQ3B9pajA5Oh2eFnuetn21ga2F47GMfbd3rKoa3ZkTcE3YrZu1klmPFEaPk63i6DM/rolzomB58/WarbDY/3Q==","signatures":[{"sig":"MEUCIG5f6EzsVCtDz2wGMJpk5ne1eOsiKIzAN5Ga3BriTj7BAiEAnupAZPNgvIVsfl0n+KQTmnv411EogYKLvKuEDI86De4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49667083},"main":"build/main.js","engines":{"node":">= 22"},"scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","prepack":"npm run build","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","test:unit":"npm run test:ts","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","verify:package":"node scripts/verify-package-contents.mjs","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"m1kad0","email":"leonie+npm@sgessinger.de"},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.13.0","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"adm-zip":"^0.5.18","@grpc/grpc-js":"^1.14.4","@iobroker/dm-utils":"^3.1.1","@m1kad0/hannah-proto":"^0.3.6","@iobroker/adapter-core":"^3.4.1"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^18.3.1","esptool-js":"^0.6.0","typescript":"~6.0.3","@types/node":"^20.19.43","@types/react":"^18.3.28","@mui/material":"^6.5.0","@emotion/react":"^11.14.0","@types/adm-zip":"^0.5.8","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.2.2","@tsconfig/node22":"^22.0.5","@types/react-dom":"^18.3.7","@iobroker/testing":"^5.2.2","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@m1kad0/esp-nvs-utils":"0.2.1","@iobroker/eslint-config":"^2.3.4","@alcalzone/release-script":"^5.2.1","@iobroker/adapter-react-v5":"^8.2.13","@alcalzone/release-script-plugin-license":"^5.2.0","@alcalzone/release-script-plugin-iobroker":"^5.2.0","@alcalzone/release-script-plugin-manual-review":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_0.31.3_1783609949954_0.6033431383492083","host":"s3://npm-registry-packages-npm-production"}},"0.32.0":{"name":"iobroker.hannah","version":"0.32.0","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@0.32.0","maintainers":[{"name":"bluefox","email":"dogafox@gmail.com"},{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"864fc56130c50ec0ca9385e1eb9fab6a62d30ea1","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-0.32.0.tgz","fileCount":36,"integrity":"sha512-i6zIPmMcPUMs/1neZBtgjSAi0ch6t9ZNhsG5vW7dMGUme8haVWoDiTBAdUn0JTci+VPLnVCdotZ5s1Kw/hhV+g==","signatures":[{"sig":"MEUCIA1mOfAIaNPyzoVi2iz+nVrMx5vZEZzeLommLCEwIWXcAiEAoi5Q1bM3zFD/FRozZfa8TT00NjtpM7cx8Dh8+ek0PRw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iobroker.hannah@0.32.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":49673221},"main":"build/main.js","engines":{"node":">= 22"},"gitHead":"3b0a6763ea4fb9f4abe10e587acce6e658718b8d","scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","prepack":"npm run build","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","test:unit":"npm run test:ts","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","verify:package":"node scripts/verify-package-contents.mjs","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:78bd7777-7b60-4a83-a038-49a20401c6b2"}},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.18.0","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"adm-zip":"^0.5.18","@grpc/grpc-js":"^1.14.4","@iobroker/dm-utils":"^3.1.1","@m1kad0/hannah-proto":"^0.4.0","@iobroker/adapter-core":"^3.4.1"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^18.3.1","esptool-js":"^0.6.0","typescript":"~6.0.3","@types/node":"^20.19.43","@types/react":"^18.3.28","@mui/material":"^6.5.0","@emotion/react":"^11.14.0","@types/adm-zip":"^0.5.8","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.2.2","@tsconfig/node22":"^22.0.5","@types/react-dom":"^18.3.7","@iobroker/testing":"^5.2.2","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@m1kad0/esp-nvs-utils":"0.2.1","@iobroker/eslint-config":"^2.3.4","@alcalzone/release-script":"^5.2.1","@iobroker/adapter-react-v5":"^8.2.13","@alcalzone/release-script-plugin-license":"^5.2.0","@alcalzone/release-script-plugin-iobroker":"^5.2.0","@alcalzone/release-script-plugin-manual-review":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_0.32.0_1783783929728_0.12460778861801391","host":"s3://npm-registry-packages-npm-production"}},"0.32.1":{"name":"iobroker.hannah","version":"0.32.1","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@0.32.1","maintainers":[{"name":"bluefox","email":"dogafox@gmail.com"},{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"53cca1abbf33d5b5d96706756078d471b7f9ad79","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-0.32.1.tgz","fileCount":36,"integrity":"sha512-TWh+39vWzCAoSWNBtN+svfPUsyykOUC17fU5EmNwvyL2iUJ+KMjRN8b9CysqbV/iQlC3BwaSRDpd45ayGlU1mw==","signatures":[{"sig":"MEUCIQD2HE51ZSR4Y1JRGV9kyh7joTm2Lj/Vkqg0NEyj02HSQQIgAgwJKcoWs9NQdF4lRGklC0HOTjn+T+LTwN89TsOuX6U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iobroker.hannah@0.32.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":49672527},"main":"build/main.js","engines":{"node":">= 22"},"gitHead":"6087d017db013c64412e94e0c38b7e9ffb7bbaaf","scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","prepack":"npm run build","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","test:unit":"npm run test:ts","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","verify:package":"node scripts/verify-package-contents.mjs","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:78bd7777-7b60-4a83-a038-49a20401c6b2"}},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.18.0","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"adm-zip":"^0.5.18","@grpc/grpc-js":"^1.14.4","@iobroker/dm-utils":"^3.1.1","@m1kad0/hannah-proto":"^0.5.0","@iobroker/adapter-core":"^3.4.1"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^18.3.1","esptool-js":"^0.6.0","typescript":"~6.0.3","@types/node":"^20.19.43","@types/react":"^18.3.28","@mui/material":"^6.5.0","@emotion/react":"^11.14.0","@types/adm-zip":"^0.5.8","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.2.2","@tsconfig/node22":"^22.0.5","@types/react-dom":"^18.3.7","@iobroker/testing":"^5.2.2","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@m1kad0/esp-nvs-utils":"0.2.1","@iobroker/eslint-config":"^2.3.4","@alcalzone/release-script":"^5.2.1","@iobroker/adapter-react-v5":"^8.2.13","@alcalzone/release-script-plugin-license":"^5.2.0","@alcalzone/release-script-plugin-iobroker":"^5.2.0","@alcalzone/release-script-plugin-manual-review":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_0.32.1_1783795957885_0.6416197540298636","host":"s3://npm-registry-packages-npm-production"}},"0.32.2":{"name":"iobroker.hannah","version":"0.32.2","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@0.32.2","maintainers":[{"name":"bluefox","email":"dogafox@gmail.com"},{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"11e04b1e9b11eaf7247bea1f207db62b1e4128ad","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-0.32.2.tgz","fileCount":36,"integrity":"sha512-xXoBwbvfSrJBMHtbMyPkgj8eHtFcufspX0O1tgQjEjjtVXOtqIolfbeUSUv9sSHCE59kGxE3OeRUoF6nbVI0iQ==","signatures":[{"sig":"MEYCIQCElPD+O0tGr9TJ63xt5R70IA8iWpsSIJoAL+ftlotNnQIhAMYugPLWByM8aJcQ9UuRbMmqZZoGFz7sGRs0l3WN1Hu3","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iobroker.hannah@0.32.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":49674046},"main":"build/main.js","engines":{"node":">= 22"},"gitHead":"c6d2c682293fd909e8266358fcffa5314764aee5","scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","prepack":"npm run build","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","test:unit":"npm run test:ts","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","verify:package":"node scripts/verify-package-contents.mjs","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:78bd7777-7b60-4a83-a038-49a20401c6b2"}},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.18.0","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"adm-zip":"^0.5.18","@grpc/grpc-js":"^1.14.4","@iobroker/dm-utils":"^3.1.1","@m1kad0/hannah-proto":"^0.5.0","@iobroker/adapter-core":"^3.4.1"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^18.3.1","esptool-js":"^0.6.0","typescript":"~6.0.3","@types/node":"^20.19.43","@types/react":"^18.3.28","@mui/material":"^6.5.0","@emotion/react":"^11.14.0","@types/adm-zip":"^0.5.8","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.2.2","@tsconfig/node22":"^22.0.5","@types/react-dom":"^18.3.7","@iobroker/testing":"^5.2.2","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@m1kad0/esp-nvs-utils":"0.2.1","@iobroker/eslint-config":"^2.3.4","@alcalzone/release-script":"^5.2.1","@iobroker/adapter-react-v5":"^8.2.13","@alcalzone/release-script-plugin-license":"^5.2.0","@alcalzone/release-script-plugin-iobroker":"^5.2.0","@alcalzone/release-script-plugin-manual-review":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_0.32.2_1783859423186_0.7911347957022752","host":"s3://npm-registry-packages-npm-production"}},"0.32.3":{"name":"iobroker.hannah","version":"0.32.3","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@0.32.3","maintainers":[{"name":"bluefox","email":"dogafox@gmail.com"},{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"ce829e4cfc0846b46b5d38fac0ba5834d5e32acb","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-0.32.3.tgz","fileCount":36,"integrity":"sha512-p1jy2lR8GWjrHvWOmMSmFHv0dtAqC0k8/gx9tIdu/p99cfZ+n7vDXaHdc0yabsYpF/BGHbuv/B9eP/UgWX7sYw==","signatures":[{"sig":"MEUCIQCXJbq3js75fv/I17uUsy27dIxMAiRw0+3JawK3CurMNQIgEtnUoN0OrQlgbgXbfgKxNbuNtjBESPSn9QLLkaXw6Y8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iobroker.hannah@0.32.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":49675674},"main":"build/main.js","engines":{"node":">= 22"},"gitHead":"051734ad85510d089c6c6405a49596fa6ee32d3f","scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","prepack":"npm run build","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","test:unit":"npm run test:ts","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","verify:package":"node scripts/verify-package-contents.mjs","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:78bd7777-7b60-4a83-a038-49a20401c6b2"}},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.18.0","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"adm-zip":"^0.5.18","@grpc/grpc-js":"^1.14.4","@iobroker/dm-utils":"^3.1.1","@m1kad0/hannah-proto":"^0.5.2","@iobroker/adapter-core":"^3.4.1"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^18.3.1","esptool-js":"^0.6.0","typescript":"~6.0.3","@types/node":"^20.19.43","@types/react":"^18.3.28","@mui/material":"^6.5.0","@emotion/react":"^11.14.0","@types/adm-zip":"^0.5.8","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.2.2","@tsconfig/node22":"^22.0.5","@types/react-dom":"^18.3.7","@iobroker/testing":"^5.2.2","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@m1kad0/esp-nvs-utils":"0.2.1","@iobroker/eslint-config":"^2.3.4","@alcalzone/release-script":"^5.2.1","@iobroker/adapter-react-v5":"^8.2.13","@alcalzone/release-script-plugin-license":"^5.2.0","@alcalzone/release-script-plugin-iobroker":"^5.2.0","@alcalzone/release-script-plugin-manual-review":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_0.32.3_1783865346855_0.9426184305552734","host":"s3://npm-registry-packages-npm-production"}},"0.31.2":{"name":"iobroker.hannah","version":"0.31.2","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@0.31.2","maintainers":[{"name":"bluefox","email":"dogafox@gmail.com"},{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"b73b8134f07417ab7058027116f6e75ca6d411f5","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-0.31.2.tgz","fileCount":36,"integrity":"sha512-eCgQTb0Tu4khvlqUTE6LYmwbIsaEmPoR9nGc9ZNRUfuhtlo86Bog6EngX96+kjld/UbF9nUUx9ybYAWO4s5BEQ==","signatures":[{"sig":"MEQCIGJlllFSsvUJVbPsCS2rWJ6f6fDJT4HYrCC6a7GgCsJVAiA/QuESMwlFQHK0sMd+tx/m42XP1uhVyoFXCwebpCUmUg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49541180},"main":"build/main.js","engines":{"node":">= 22"},"scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","prepack":"npm run build","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","test:unit":"npm run test:ts","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","verify:package":"node scripts/verify-package-contents.mjs","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"m1kad0","email":"leonie+npm@sgessinger.de"},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.13.0","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"adm-zip":"^0.5.18","@grpc/grpc-js":"^1.14.4","@iobroker/dm-utils":"^3.1.1","@m1kad0/hannah-proto":"^0.3.6","@iobroker/adapter-core":"^3.4.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"react":"^18.3.1","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^18.3.1","esptool-js":"^0.6.0","typescript":"~6.0.3","@types/node":"^20.19.43","@types/react":"^18.3.28","@mui/material":"^6.5.0","@emotion/react":"^11.14.0","@types/adm-zip":"^0.5.8","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.2.2","@tsconfig/node22":"^22.0.5","@types/react-dom":"^18.3.7","@iobroker/testing":"^5.2.2","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@m1kad0/esp-nvs-utils":"0.2.1","@iobroker/eslint-config":"^2.3.4","@alcalzone/release-script":"^5.2.1","@iobroker/adapter-react-v5":"^8.2.13","@alcalzone/release-script-plugin-license":"^5.2.0","@alcalzone/release-script-plugin-iobroker":"^5.2.0","@alcalzone/release-script-plugin-manual-review":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_0.31.2_1783967816104_0.8019856280878506","host":"s3://npm-registry-packages-npm-production"}},"0.32.4":{"name":"iobroker.hannah","version":"0.32.4","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@0.32.4","maintainers":[{"name":"bluefox","email":"dogafox@gmail.com"},{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"8764b02ef965b93a961b079fcfee6037187e7cfc","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-0.32.4.tgz","fileCount":36,"integrity":"sha512-h1J3qz7l88zkWhtBDWJWnuV6X/lVc1xInMG4kh30ozlPT1tpWnPf4Fd0UqXldBDiE7ef6yjjDxz0pAeBcT8Vpg==","signatures":[{"sig":"MEYCIQCRlJHirNd+N979yjOlDlU7ZEzjq7FeN69YMkeMO9oZZQIhAKmgYz3wZbvmXIheWQywwXGRSu1Fr/n1Xhz0xQrQ0bfx","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iobroker.hannah@0.32.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":49697679},"main":"build/main.js","engines":{"node":">= 22"},"gitHead":"1fad46bd1efaaf8622b8d0ffadb7f75d01070d31","scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","prepack":"npm run build","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","test:unit":"npm run test:ts","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","verify:package":"node scripts/verify-package-contents.mjs","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:78bd7777-7b60-4a83-a038-49a20401c6b2"}},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.18.0","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"adm-zip":"^0.5.18","@grpc/grpc-js":"^1.14.4","@iobroker/dm-utils":"^3.1.3","@m1kad0/hannah-proto":"^0.5.2","@iobroker/adapter-core":"^3.4.1"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^18.3.1","esptool-js":"^0.6.0","typescript":"~6.0.3","@types/node":"^20.19.43","@types/react":"^18.3.28","@mui/material":"^6.5.0","@emotion/react":"^11.14.0","@types/adm-zip":"^0.5.8","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.2.2","@tsconfig/node22":"^22.0.5","@types/react-dom":"^18.3.7","@iobroker/testing":"^5.2.2","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@m1kad0/esp-nvs-utils":"0.2.1","@iobroker/eslint-config":"^2.3.4","@alcalzone/release-script":"^5.2.1","@iobroker/adapter-react-v5":"^8.2.13","@alcalzone/release-script-plugin-license":"^5.2.0","@alcalzone/release-script-plugin-iobroker":"^5.2.0","@alcalzone/release-script-plugin-manual-review":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_0.32.4_1783971724348_0.2003780469660481","host":"s3://npm-registry-packages-npm-production"}},"0.32.5":{"name":"iobroker.hannah","version":"0.32.5","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@0.32.5","maintainers":[{"name":"bluefox","email":"dogafox@gmail.com"},{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"9034a089d307cac389e0c2520746bdcf68558903","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-0.32.5.tgz","fileCount":36,"integrity":"sha512-vdaaRg9raiCoRJbbk1wpCGzEkMFIAz2KDdmZW0UAF9hOzZIFDMjmO1dEjauN/+YUMthff2g8RfC4FieTTp5B5g==","signatures":[{"sig":"MEUCIGkd0I1QZqKeVZdOlSBLV2M8h9yv9axE8SIK7y1hLJXiAiEA5W31wum/qOzTZg7+XadHFKykBJPGrhWdlNEf826zjTw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iobroker.hannah@0.32.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":49693212},"main":"build/main.js","engines":{"node":">= 22"},"gitHead":"0ccfcf8fec0c61f5fc8a19a74eeda4cfd1f91b37","scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","prepack":"npm run build","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","test:unit":"npm run test:ts","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","verify:package":"node scripts/verify-package-contents.mjs","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:78bd7777-7b60-4a83-a038-49a20401c6b2"}},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.18.0","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"adm-zip":"^0.5.18","@grpc/grpc-js":"^1.14.4","@iobroker/dm-utils":"^3.1.3","@m1kad0/hannah-proto":"^0.5.2","@iobroker/adapter-core":"^3.4.1"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^18.3.1","esptool-js":"^0.6.0","typescript":"~6.0.3","@types/node":"^20.19.43","@types/react":"^18.3.28","@mui/material":"^6.5.0","@emotion/react":"^11.14.0","@types/adm-zip":"^0.5.8","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.2.2","@tsconfig/node22":"^22.0.5","@types/react-dom":"^18.3.7","@iobroker/testing":"^5.2.2","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@m1kad0/esp-nvs-utils":"0.2.1","@iobroker/eslint-config":"^2.3.4","@alcalzone/release-script":"^5.2.1","@iobroker/adapter-react-v5":"^8.2.13","@alcalzone/release-script-plugin-license":"^5.2.0","@alcalzone/release-script-plugin-iobroker":"^5.2.0","@alcalzone/release-script-plugin-manual-review":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_0.32.5_1784148485913_0.5768109696654691","host":"s3://npm-registry-packages-npm-production"}},"0.32.6":{"name":"iobroker.hannah","version":"0.32.6","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@0.32.6","maintainers":[{"name":"bluefox","email":"dogafox@gmail.com"},{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"fe24f74f79f80b94e670ee578f8d02ea4d464177","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-0.32.6.tgz","fileCount":36,"integrity":"sha512-i6C04BCyIExhIyRGiWiVM0NvNE10aiWlvu28ekgkYUqEJUASPnGvFO8h1XJX9CLo3pTEvERdNqOMJjcpnSQrig==","signatures":[{"sig":"MEQCICuIZgismC0VCQ7HMbYjEUfcxt6LKfp7EOvIQq3cnCusAiBp0HgGIMcrGk/7/+tII0eP+XhN/v5d+WocyF/qpQqz3A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iobroker.hannah@0.32.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":49679998},"main":"build/main.js","engines":{"node":">= 22"},"gitHead":"4af188835e3ac81b7c471d4fd27d32c5f6f3cfe7","scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","prepack":"npm run build","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","test:unit":"npm run test:ts","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","verify:package":"node scripts/verify-package-contents.mjs","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:78bd7777-7b60-4a83-a038-49a20401c6b2"}},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.18.0","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"adm-zip":"^0.5.18","@grpc/grpc-js":"^1.14.4","@iobroker/dm-utils":"^3.1.3","@m1kad0/hannah-proto":"^0.5.2","@iobroker/adapter-core":"^3.4.1"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^18.3.1","esptool-js":"^0.6.0","typescript":"~6.0.3","@types/node":"^20.19.43","@types/react":"^18.3.28","@mui/material":"^6.5.0","@emotion/react":"^11.14.0","@types/adm-zip":"^0.5.8","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.2.2","@tsconfig/node22":"^22.0.5","@types/react-dom":"^18.3.7","@iobroker/testing":"^5.2.2","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@m1kad0/esp-nvs-utils":"0.2.1","@iobroker/eslint-config":"^2.3.4","@alcalzone/release-script":"^5.2.1","@iobroker/adapter-react-v5":"^8.2.13","@alcalzone/release-script-plugin-license":"^5.2.0","@alcalzone/release-script-plugin-iobroker":"^5.2.0","@alcalzone/release-script-plugin-manual-review":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_0.32.6_1785095973660_0.01110740741645877","host":"s3://npm-registry-packages-npm-production"}},"0.33.0":{"name":"iobroker.hannah","version":"0.33.0","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@0.33.0","maintainers":[{"name":"bluefox","email":"dogafox@gmail.com"},{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"d51dafbf3bae75574fbff63f5ff732b6152dd11c","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-0.33.0.tgz","fileCount":36,"integrity":"sha512-pIJJXoqp8xzZ/hQniTTfd9u1mtET2wUJdOCNQgTRAa2sD3psBEG5dwLW/3B0kSJCSaTl1lvx99UHJEjKLF4sCQ==","signatures":[{"sig":"MEUCIQCDTxPFRDvXMdI9mompYRwT2I7vPvXUMPkDHMiJJUo4nAIgULiEARmDLGEAnUnmKW4/UYqzLp3sW8OQQKCeClPHZ4U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iobroker.hannah@0.33.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":49686266},"main":"build/main.js","engines":{"node":">= 22"},"gitHead":"6413ff21c9bb958b3560d80270126a4030ae1d6d","scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","prepack":"npm run build","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","test:unit":"npm run test:ts","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","verify:package":"node scripts/verify-package-contents.mjs","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:78bd7777-7b60-4a83-a038-49a20401c6b2"}},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.19.0","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"adm-zip":"^0.5.18","@grpc/grpc-js":"^1.14.4","@iobroker/dm-utils":"^3.1.3","@m1kad0/hannah-proto":"^0.5.6","@iobroker/adapter-core":"^3.4.1"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^18.3.1","esptool-js":"^0.6.0","typescript":"~6.0.3","@types/node":"^20.19.43","@types/react":"^18.3.28","@mui/material":"^6.5.0","@emotion/react":"^11.14.0","@types/adm-zip":"^0.5.8","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.2.2","@tsconfig/node22":"^22.0.5","@types/react-dom":"^18.3.7","@iobroker/testing":"^5.2.2","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@m1kad0/esp-nvs-utils":"0.2.1","@iobroker/eslint-config":"^2.3.4","@alcalzone/release-script":"^5.2.1","@iobroker/adapter-react-v5":"^8.2.13","@alcalzone/release-script-plugin-license":"^5.2.0","@alcalzone/release-script-plugin-iobroker":"^5.2.0","@alcalzone/release-script-plugin-manual-review":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_0.33.0_1785598015180_0.08916484858969387","host":"s3://npm-registry-packages-npm-production"}},"0.33.1":{"name":"iobroker.hannah","version":"0.33.1","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@0.33.1","maintainers":[{"name":"bluefox","email":"dogafox@gmail.com"},{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"4a3bd3434f1e58ede5064d4dc297ea11506920df","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-0.33.1.tgz","fileCount":36,"integrity":"sha512-AZpAx6ej6BUwT+fH5qvqrbO8b21y4U5zSsyWFkTE9vSvVgLqm7HeJFteX83v3QOayl/qAHhBMDX/9/spjK6gOg==","signatures":[{"sig":"MEUCIEj5Hfy8eYqfx3ZzNljLcXR0Xe7EceA7we5lSNmjQcGdAiEA9Fk6muCCcCOZjKpFJxaflG6k16SUj0HV8gsE5YUXuC8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iobroker.hannah@0.33.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":49695633},"main":"build/main.js","engines":{"node":">= 22"},"gitHead":"2840b248be082315d10e97bcb24144ae5832cfe9","scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","prepack":"npm run build","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","test:unit":"npm run test:ts","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","verify:package":"node scripts/verify-package-contents.mjs","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:78bd7777-7b60-4a83-a038-49a20401c6b2"}},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.19.0","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"adm-zip":"^0.5.18","@grpc/grpc-js":"^1.14.4","@iobroker/dm-utils":"^3.1.3","@m1kad0/hannah-proto":"^0.5.6","@iobroker/adapter-core":"^3.4.1"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^18.3.1","esptool-js":"^0.6.0","typescript":"~6.0.3","@types/node":"^20.19.43","@types/react":"^18.3.28","@mui/material":"^6.5.0","@emotion/react":"^11.14.0","@types/adm-zip":"^0.5.8","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.2.2","@tsconfig/node22":"^22.0.5","@types/react-dom":"^18.3.7","@iobroker/testing":"^5.2.2","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@m1kad0/esp-nvs-utils":"0.2.1","@iobroker/eslint-config":"^2.3.4","@alcalzone/release-script":"^5.2.1","@iobroker/adapter-react-v5":"^8.2.13","@alcalzone/release-script-plugin-license":"^5.2.0","@alcalzone/release-script-plugin-iobroker":"^5.2.0","@alcalzone/release-script-plugin-manual-review":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_0.33.1_1785603323358_0.2560965217066309","host":"s3://npm-registry-packages-npm-production"}},"0.33.2":{"name":"iobroker.hannah","version":"0.33.2","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@0.33.2","maintainers":[{"name":"bluefox","email":"dogafox@gmail.com"},{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"ab5ddca25895bf68abce1279c83ccaf8455ce7a3","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-0.33.2.tgz","fileCount":36,"integrity":"sha512-C4nlZMWZavCg890ArpfZ7ie2Msb127SAk+AuC+OIinCG14GHn+oQqbXVjh1hMMD9w9FqfNaG9HzR3xRuN04LZQ==","signatures":[{"sig":"MEQCIHMXxpCjJuId9fFlU4LiDr3WiupMTQEZ2sAuBJYfstCYAiBfVLRTurJj6y6Mkia+yTlAU6uizpqAhE1duKPG5n4gVA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iobroker.hannah@0.33.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":49696134},"main":"build/main.js","engines":{"node":">= 22"},"gitHead":"ca7224f250d3e72a5a830f28482f8e89a06fdb30","scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","prepack":"npm run build","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","test:unit":"npm run test:ts","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","verify:package":"node scripts/verify-package-contents.mjs","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:78bd7777-7b60-4a83-a038-49a20401c6b2"}},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.19.0","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"adm-zip":"^0.5.18","@grpc/grpc-js":"^1.14.4","@iobroker/dm-utils":"^3.1.3","@m1kad0/hannah-proto":"^0.5.6","@iobroker/adapter-core":"^3.4.1"},"_hasShrinkwrap":false,"devDependencies":{"react":"^18.3.1","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^18.3.1","esptool-js":"^0.6.0","typescript":"~6.0.3","@types/node":"^20.19.43","@types/react":"^18.3.28","@mui/material":"^6.5.0","@emotion/react":"^11.14.0","@types/adm-zip":"^0.5.8","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.2.2","@tsconfig/node22":"^22.0.5","@types/react-dom":"^18.3.7","@iobroker/testing":"^5.2.2","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@m1kad0/esp-nvs-utils":"0.2.1","@iobroker/eslint-config":"^2.3.4","@alcalzone/release-script":"^5.2.1","@iobroker/adapter-react-v5":"^8.2.13","@alcalzone/release-script-plugin-license":"^5.2.0","@alcalzone/release-script-plugin-iobroker":"^5.2.0","@alcalzone/release-script-plugin-manual-review":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_0.33.2_1785618595805_0.8242155422552127","host":"s3://npm-registry-packages-npm-production"}},"0.33.3":{"name":"iobroker.hannah","version":"0.33.3","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@0.33.3","maintainers":[{"name":"bluefox","email":"dogafox@gmail.com"},{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"3c5af5f38704d7e4086d85e66528bb8a893f6180","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-0.33.3.tgz","fileCount":36,"integrity":"sha512-ecNMuBfTNvvPNR6iQuNAxhLJl4kHpWuIif/wbUqYeKDzqVdMEIT40rh4QlFCSPLr9xLS7kHpOD5140E01K3J4g==","signatures":[{"sig":"MEYCIQCL+W0E8wP54UF0A3eWKkMg2MwgrLKN0mFgz2poCpuDKQIhAIUCwBAAOBwTEFRxCt+0xyNq6KNbl4opYRAEmpA31S0j","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iobroker.hannah@0.33.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":50288607},"main":"build/main.js","engines":{"node":">= 22"},"gitHead":"88179640c7ea8ba259b7e1570f6aecfdf956f73d","scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","prepack":"npm run build","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","test:unit":"npm run test:ts","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","verify:package":"node scripts/verify-package-contents.mjs","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:78bd7777-7b60-4a83-a038-49a20401c6b2"}},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.19.0","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"adm-zip":"^0.6.0","@grpc/grpc-js":"^1.14.4","@iobroker/dm-utils":"^3.2.0","@m1kad0/hannah-proto":"^0.5.6","@iobroker/adapter-core":"^3.4.3"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.0.0","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^19.0.0","esptool-js":"^0.6.0","typescript":"~6.0.3","@types/node":"^20.19.43","@types/react":"^19.0.0","@mui/material":"^9.0.0","@emotion/react":"^11.14.0","@types/adm-zip":"^0.5.8","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.2.2","@tsconfig/node22":"^22.0.5","@types/react-dom":"^19.0.0","@iobroker/testing":"^5.3.0","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@m1kad0/esp-nvs-utils":"^0.2.4","@iobroker/eslint-config":"^2.3.4","@iobroker/gui-components":"^10.0.0","@alcalzone/release-script":"^5.2.1","@alcalzone/release-script-plugin-license":"^5.2.0","@alcalzone/release-script-plugin-iobroker":"^5.2.0","@alcalzone/release-script-plugin-manual-review":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_0.33.3_1785790151673_0.6786824650913292","host":"s3://npm-registry-packages-npm-production"}},"0.33.4":{"name":"iobroker.hannah","version":"0.33.4","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@0.33.4","maintainers":[{"name":"bluefox","email":"dogafox@gmail.com"},{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"19db976def52c0813218f45a68bfdbb4a8b8f87b","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-0.33.4.tgz","fileCount":36,"integrity":"sha512-TGrxQtFKez3+YrU+MsMz9qvC4sjvsRhGoMM7tR/HftsR3PrPtEeMECXTmgPfUfcu3SeiVM2ypemCLFgD0fgFKg==","signatures":[{"sig":"MEUCIQDMpVdddjf2o6Bhq9EEaOAZ5MSUE/dI4qIvVDRAANZYhAIgTtca9N+Q02L+OtDCcn3OPRkdRVNiNNPFg5e54x+90pU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iobroker.hannah@0.33.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":50271445},"main":"build/main.js","engines":{"node":">= 22"},"gitHead":"0c9c998c1c0f03c644309da600120147256e2a13","scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","prepack":"npm run build","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","test:unit":"npm run test:ts","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","verify:package":"node scripts/verify-package-contents.mjs","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:78bd7777-7b60-4a83-a038-49a20401c6b2"}},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.19.0","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"adm-zip":"^0.6.0","@grpc/grpc-js":"^1.14.4","@iobroker/dm-utils":"^3.2.0","@m1kad0/hannah-proto":"^1.0.2","@iobroker/adapter-core":"^3.4.3"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.0.0","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^19.0.0","esptool-js":"^0.6.0","typescript":"~6.0.3","@types/node":"^20.19.43","@types/react":"^19.0.0","@mui/material":"^9.0.0","@emotion/react":"^11.14.0","@types/adm-zip":"^0.5.8","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.2.2","@tsconfig/node22":"^22.0.5","@types/react-dom":"^19.0.0","@iobroker/testing":"^5.3.0","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@m1kad0/esp-nvs-utils":"^0.2.4","@iobroker/eslint-config":"^2.3.4","@iobroker/gui-components":"^10.0.0","@alcalzone/release-script":"^5.2.1","@alcalzone/release-script-plugin-license":"^5.2.0","@alcalzone/release-script-plugin-iobroker":"^5.2.0","@alcalzone/release-script-plugin-manual-review":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_0.33.4_1785885242460_0.234426289407065","host":"s3://npm-registry-packages-npm-production"}},"0.34.0":{"name":"iobroker.hannah","version":"0.34.0","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@0.34.0","maintainers":[{"name":"bluefox","email":"dogafox@gmail.com"},{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"bea937a7efb1e8e792a4424c29230165ae605534","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-0.34.0.tgz","fileCount":38,"integrity":"sha512-gfVYzb5rAe0tRvtjNS0vU1MmcjMd5T/XLSQNf10Jc1JzF93ZqSKmycfV1950LyPojmClul0TKcQc5wKJGM138Q==","signatures":[{"sig":"MEUCICh6plKryGXfN3abLdRo6ed6azM7HkYcBg/YJPbBAPsDAiEAp32pb23vKcpCdNz6uPd7PUVaTld2Z0KMUgPO97x+k/o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iobroker.hannah@0.34.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":50334515},"main":"build/main.js","engines":{"node":">= 22"},"gitHead":"ae4fd404d55a82164f4c7f624fa6429177dfb4d6","scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","prepack":"npm run build","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","test:unit":"npm run test:ts","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","verify:package":"node scripts/verify-package-contents.mjs","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:78bd7777-7b60-4a83-a038-49a20401c6b2"}},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.19.0","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"adm-zip":"^0.6.0","@grpc/grpc-js":"^1.14.4","@iobroker/dm-utils":"^3.2.0","@m1kad0/hannah-proto":"^1.1.0","@iobroker/adapter-core":"^3.4.3"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.0.0","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^19.0.0","esptool-js":"^0.6.0","typescript":"~6.0.3","@types/node":"^20.19.43","@types/react":"^19.0.0","@mui/material":"^9.0.0","@emotion/react":"^11.14.0","@types/adm-zip":"^0.5.8","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.2.2","@tsconfig/node22":"^22.0.5","@types/react-dom":"^19.0.0","@iobroker/testing":"^5.3.0","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@m1kad0/esp-nvs-utils":"^0.2.4","@iobroker/eslint-config":"^2.3.4","@iobroker/gui-components":"^10.0.0","@alcalzone/release-script":"^5.2.1","@alcalzone/release-script-plugin-license":"^5.2.0","@alcalzone/release-script-plugin-iobroker":"^5.2.0","@alcalzone/release-script-plugin-manual-review":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_0.34.0_1785951291349_0.3408132177476062","host":"s3://npm-registry-packages-npm-production"}},"0.34.1":{"name":"iobroker.hannah","version":"0.34.1","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@0.34.1","maintainers":[{"name":"bluefox","email":"dogafox@gmail.com"},{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"355fcea906ee4d651317f6a6741ce0eb1866aa95","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-0.34.1.tgz","fileCount":38,"integrity":"sha512-gfaxql92HPvZaVj2B8oQw8TkOoPZuk3t868zbtwzf9p7r3fFw/JxNEO/+Aj7lLQ3iMwrssV861vVwhUrGBIFTQ==","signatures":[{"sig":"MEQCICRG+F20x6Zt5Wqw449i4RbZZA68QH0jdfYQPCwcuzfFAiAKKpLDmSL3tlmhsBkcAzXDfCNgYTyExzZma18OxFhI6A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iobroker.hannah@0.34.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":50337327},"main":"build/main.js","engines":{"node":">= 22"},"gitHead":"a2884784eae40c29dba399332560521d5f4c0ceb","scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","prepack":"npm run build","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","test:unit":"npm run test:ts","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","verify:package":"node scripts/verify-package-contents.mjs","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:78bd7777-7b60-4a83-a038-49a20401c6b2"}},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.19.0","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"adm-zip":"^0.6.0","@grpc/grpc-js":"^1.14.4","@iobroker/dm-utils":"^3.2.0","@m1kad0/hannah-proto":"^1.1.0","@iobroker/adapter-core":"^3.4.3"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.0.0","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^19.0.0","esptool-js":"^0.6.0","typescript":"~6.0.3","@types/node":"^20.19.43","@types/react":"^19.0.0","@mui/material":"^9.0.0","@emotion/react":"^11.14.0","@types/adm-zip":"^0.5.8","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.2.2","@tsconfig/node22":"^22.0.5","@types/react-dom":"^19.0.0","@iobroker/testing":"^5.3.0","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@m1kad0/esp-nvs-utils":"^0.2.4","@iobroker/eslint-config":"^2.3.4","@iobroker/gui-components":"^10.0.0","@alcalzone/release-script":"^5.2.1","@alcalzone/release-script-plugin-license":"^5.2.0","@alcalzone/release-script-plugin-iobroker":"^5.2.0","@alcalzone/release-script-plugin-manual-review":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_0.34.1_1785960872186_0.9059827357653232","host":"s3://npm-registry-packages-npm-production"}},"0.34.2":{"name":"iobroker.hannah","version":"0.34.2","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@0.34.2","maintainers":[{"name":"bluefox","email":"dogafox@gmail.com"},{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"d3d98585037067bedffd48567bdc7271b11902fa","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-0.34.2.tgz","fileCount":38,"integrity":"sha512-TAXe4GuOJCmcUUO9DwIZ8k/e69qhzmp44cUPm3VSjlUfcY20mQoIqdtYCEcQqszvDjGR7+ox3QtuoNHKEM/WNg==","signatures":[{"sig":"MEQCIB3AcbU+W0Z/Zl7E1/Ndz8kekwpzuAv1QsEVgh+UIiHXAiBGNGGPREH5D8cWyzoRk6TGjs1fJxA94/sZ+lFf0tSTWQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iobroker.hannah@0.34.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":50336248},"main":"build/main.js","engines":{"node":">= 22"},"gitHead":"285ba65547150a0522ece8ab773d9a5efcafdf9a","scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","prepack":"npm run build","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","test:unit":"npm run test:ts","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","verify:package":"node scripts/verify-package-contents.mjs","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:78bd7777-7b60-4a83-a038-49a20401c6b2"}},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.19.0","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"adm-zip":"^0.6.0","@grpc/grpc-js":"^1.14.4","@iobroker/dm-utils":"^3.2.0","@m1kad0/hannah-proto":"^1.1.0","@iobroker/adapter-core":"^3.4.3"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.0.0","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^19.0.0","esptool-js":"^0.6.0","typescript":"~6.0.3","@types/node":"^20.19.43","@types/react":"^19.0.0","@mui/material":"^9.0.0","@emotion/react":"^11.14.0","@types/adm-zip":"^0.5.8","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.2.2","@tsconfig/node22":"^22.0.5","@types/react-dom":"^19.0.0","@iobroker/testing":"^5.3.0","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@m1kad0/esp-nvs-utils":"^0.2.4","@iobroker/eslint-config":"^2.3.4","@iobroker/gui-components":"^10.0.0","@alcalzone/release-script":"^5.2.1","@alcalzone/release-script-plugin-license":"^5.2.0","@alcalzone/release-script-plugin-iobroker":"^5.2.0","@alcalzone/release-script-plugin-manual-review":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_0.34.2_1785963302890_0.6166537853499141","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"iobroker.hannah","version":"1.0.0","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@1.0.0","maintainers":[{"name":"bluefox","email":"dogafox@gmail.com"},{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"82cba3599f0593b21656e96f60bef59537b0a21e","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-1.0.0.tgz","fileCount":38,"integrity":"sha512-LHUe6KVHhnsAcM2ehZTs2YfvH6rBBhbrdokM66P80yjcgNmanIw/ofSGR2BivQnd0SPOac8WE3LCF71LuB26kQ==","signatures":[{"sig":"MEUCIQCP0gSR3snKSv+98v9xwgs2sA0ymDyTA0W8jqHq2ied/wIgeiJNHcw6SBTpRAtzij5BsmDae5gTmAbbW1k6SZn+6CU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iobroker.hannah@1.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":50346326},"main":"build/main.js","engines":{"node":">= 22"},"gitHead":"56a8ba5e2e7cbb3bd5fa2d81986bd7187adc9b45","scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","prepack":"npm run build","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","test:unit":"npm run test:ts","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","verify:package":"node scripts/verify-package-contents.mjs","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:78bd7777-7b60-4a83-a038-49a20401c6b2"}},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.19.0","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"adm-zip":"^0.6.0","@grpc/grpc-js":"^1.14.4","@iobroker/dm-utils":"^3.2.0","@m1kad0/hannah-proto":"^2.0.1","@iobroker/adapter-core":"^3.4.3"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.0.0","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^19.0.0","esptool-js":"^0.6.0","typescript":"~6.0.3","@types/node":"^20.19.43","@types/react":"^19.0.0","@mui/material":"^9.0.0","@emotion/react":"^11.14.0","@types/adm-zip":"^0.5.8","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.2.2","@tsconfig/node22":"^22.0.5","@types/react-dom":"^19.0.0","@iobroker/testing":"^5.3.0","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@m1kad0/esp-nvs-utils":"^0.2.4","@iobroker/eslint-config":"^2.3.4","@iobroker/gui-components":"^10.0.0","@alcalzone/release-script":"^5.2.1","@alcalzone/release-script-plugin-license":"^5.2.0","@alcalzone/release-script-plugin-iobroker":"^5.2.0","@alcalzone/release-script-plugin-manual-review":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_1.0.0_1786037714380_0.15961083695974176","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"iobroker.hannah","version":"1.0.1","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@1.0.1","maintainers":[{"name":"bluefox","email":"dogafox@gmail.com"},{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"cc372ef614f97244c31a20898d03d60b32ef501a","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-1.0.1.tgz","fileCount":38,"integrity":"sha512-ulpUtXzKdcNqOhCD2eaREnNUKbHBLhDYhTsA/dHHvzhFOn/gLhScHlKgJI17CWzHsOdNf+SejRjGPWpAgr+eIQ==","signatures":[{"sig":"MEUCIQD3CkKJ+tjJ4D+YVZe/OQYDFvmQryuv6w1Jdo5qrr3NugIgBFJ+mDIrAnqAkxlE16v9GlotVGF7xNKxgmAOXqEvWyE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":50347857},"main":"build/main.js","engines":{"node":">= 22"},"scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","prepack":"npm run build","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","test:unit":"npm run test:ts","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","verify:package":"node scripts/verify-package-contents.mjs","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"m1kad0","email":"leonie+npm@sgessinger.de"},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.16.0","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"adm-zip":"^0.6.0","@grpc/grpc-js":"^1.14.4","@iobroker/dm-utils":"^3.2.0","@m1kad0/hannah-proto":"^2.1.0","@iobroker/adapter-core":"^3.4.3"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.0.0","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^19.0.0","esptool-js":"^0.6.0","typescript":"~6.0.3","@types/node":"^20.19.43","@types/react":"^19.0.0","@mui/material":"^9.0.0","@emotion/react":"^11.14.0","@types/adm-zip":"^0.5.8","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.2.2","@tsconfig/node22":"^22.0.5","@types/react-dom":"^19.0.0","@iobroker/testing":"^5.3.0","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@m1kad0/esp-nvs-utils":"^0.2.4","@iobroker/eslint-config":"^2.3.4","@iobroker/gui-components":"^10.0.0","@alcalzone/release-script":"^5.2.1","@alcalzone/release-script-plugin-license":"^5.2.0","@alcalzone/release-script-plugin-iobroker":"^5.2.0","@alcalzone/release-script-plugin-manual-review":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_1.0.1_1786047957962_0.3226380493107046","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"iobroker.hannah","version":"1.0.2","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@1.0.2","maintainers":[{"name":"bluefox","email":"dogafox@gmail.com"},{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"c818a4c9dbc13b21abfc82e9ba414e316e186706","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-1.0.2.tgz","fileCount":38,"integrity":"sha512-sMKcelykgNeeJcZsSXfb+ICTYRKlFgrah0s3kg73ABF6ypX0X92iZa/Anp4lzhqS1jdAIPlS+0fvK46WeVGrZA==","signatures":[{"sig":"MEUCIQCdaZFNT2kAfGbJiea829gRRIwXwnatYV5Umcj3Pil9vgIgQefpJKOTv7+oL44JdeJDlaYImnN7oE+/+Y49K/ghqsc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iobroker.hannah@1.0.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":50354144},"main":"build/main.js","engines":{"node":">= 22"},"gitHead":"8f3c2d4d24f57bf7e1c9556e164c4ef2d20cba03","scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","prepack":"npm run build","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","test:unit":"npm run test:ts","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","verify:package":"node scripts/verify-package-contents.mjs","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:78bd7777-7b60-4a83-a038-49a20401c6b2"}},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.19.0","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"adm-zip":"^0.6.0","@grpc/grpc-js":"^1.14.4","@iobroker/dm-utils":"^3.2.0","@m1kad0/hannah-proto":"^3.2.0","@iobroker/adapter-core":"^3.4.3"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.0.0","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^19.0.0","esptool-js":"^0.6.0","typescript":"~6.0.3","@types/node":"^20.19.43","@types/react":"^19.0.0","@mui/material":"^9.0.0","@emotion/react":"^11.14.0","@types/adm-zip":"^0.5.8","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.2.2","@tsconfig/node22":"^22.0.5","@types/react-dom":"^19.0.0","@iobroker/testing":"^5.3.0","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@m1kad0/esp-nvs-utils":"^0.2.4","@iobroker/eslint-config":"^2.3.4","@iobroker/gui-components":"^10.0.0","@alcalzone/release-script":"^5.2.1","@alcalzone/release-script-plugin-license":"^5.2.2","@alcalzone/release-script-plugin-iobroker":"^5.2.0","@alcalzone/release-script-plugin-manual-review":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_1.0.2_1786290669359_0.8390382141854029","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"iobroker.hannah","version":"1.1.0","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@1.1.0","maintainers":[{"name":"bluefox","email":"dogafox@gmail.com"},{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"364e45cf5d158bdd10c731855c42c059672f4788","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-1.1.0.tgz","fileCount":38,"integrity":"sha512-mG1KCkki6HL08fMPYyXV+AuZ4Jnz993bC+3q4wuIsPzdkkRTrofFVuzMwRxVVUmsiqUFQZQmTPUkhwtcT0rITw==","signatures":[{"sig":"MEUCIHjpkVJg8LoWMFyzA1p5yYQm4w+ZJnVSSLMP/oMSyNJeAiEAypMTMpqdlrgCkmwmKRVCtMbVMf1t/UFpd36p4f/k2jQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iobroker.hannah@1.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":50360252},"main":"build/main.js","engines":{"node":">= 22"},"gitHead":"e38629f74e078e1dc2640c81861fd2597821518c","scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","prepack":"npm run build","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","test:unit":"npm run test:ts","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","verify:package":"node scripts/verify-package-contents.mjs","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:78bd7777-7b60-4a83-a038-49a20401c6b2"}},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.19.1","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"adm-zip":"^0.6.0","@grpc/grpc-js":"^1.14.4","@iobroker/dm-utils":"^3.2.0","@m1kad0/hannah-proto":"^3.8.0","@iobroker/adapter-core":"^3.4.3"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.0.0","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^19.0.0","esptool-js":"^0.6.0","typescript":"~6.0.3","@types/node":"^20.19.43","@types/react":"^19.0.0","@mui/material":"^9.0.0","@emotion/react":"^11.14.0","@types/adm-zip":"^0.5.8","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.2.2","@tsconfig/node22":"^22.0.5","@types/react-dom":"^19.0.0","@iobroker/testing":"^5.3.0","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@m1kad0/esp-nvs-utils":"^0.2.4","@iobroker/eslint-config":"^2.3.4","@iobroker/gui-components":"^10.0.0","@alcalzone/release-script":"^5.2.1","@alcalzone/release-script-plugin-license":"^5.2.2","@alcalzone/release-script-plugin-iobroker":"^5.2.0","@alcalzone/release-script-plugin-manual-review":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_1.1.0_1788652931716_0.9328399179149636","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"iobroker.hannah","version":"1.1.1","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@1.1.1","maintainers":[{"name":"bluefox","email":"dogafox@gmail.com"},{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"3cb5ac6ffe8664a4444282a090a26650c66ef14a","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-1.1.1.tgz","fileCount":39,"integrity":"sha512-zhmn9thlNIhprA1L9l+BMv/hPBtG+LqQ9abRLDEmpcPoRU3x8KSk02szfyCZ/xMdSMV6KTNvW3uXNKjKcSjEvw==","signatures":[{"sig":"MEUCIQCnIc5DdjLx6uUj1CfAS8cHWvPz14zt0fvNY55mad9MzAIgdM0ozWAWq9X0AbDPKCYkJEBohRnaino04r+lpdylEgE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iobroker.hannah@1.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":50367038},"main":"build/main.js","engines":{"node":">= 22"},"gitHead":"831151af2e882ac8ccdafd2af29cdc7ac480ca3c","scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","prepack":"npm run build","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","test:unit":"npm run test:ts","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","verify:package":"node scripts/verify-package-contents.mjs","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:78bd7777-7b60-4a83-a038-49a20401c6b2"}},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.19.1","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"adm-zip":"^0.6.0","@grpc/grpc-js":"^1.14.4","@iobroker/dm-utils":"^3.2.0","@m1kad0/hannah-proto":"^3.8.0","@iobroker/adapter-core":"^3.4.3"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.0.0","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^19.0.0","esptool-js":"^0.6.0","typescript":"~6.0.3","@types/node":"^20.19.43","@types/react":"^19.0.0","@mui/material":"^9.0.0","@emotion/react":"^11.14.0","@types/adm-zip":"^0.5.8","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.2.2","@tsconfig/node22":"^22.0.5","@types/react-dom":"^19.0.0","@iobroker/testing":"^5.3.0","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@m1kad0/esp-nvs-utils":"^0.2.4","@iobroker/eslint-config":"^2.3.4","@iobroker/gui-components":"^10.0.0","@alcalzone/release-script":"^5.2.1","@alcalzone/release-script-plugin-license":"^5.2.2","@alcalzone/release-script-plugin-iobroker":"^5.2.0","@alcalzone/release-script-plugin-manual-review":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_1.1.1_1788658371703_0.6982858585098006","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"iobroker.hannah","version":"1.1.2","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@1.1.2","maintainers":[{"name":"bluefox","email":"dogafox@gmail.com"},{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"96f939e9988bd2431ed7717be4fdd76f5de28c06","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-1.1.2.tgz","fileCount":39,"integrity":"sha512-EeZxwC77hkKLqoD7uyh8tEz6MuX6QRgKrQ8DzrmJ1cHx9xzZsmC+XkpgLOZYPMwG7wfdEn7r5TNzepP+ZCppyg==","signatures":[{"sig":"MEUCIQC7t9eqjg7lFowmifIr5rD9+YuN2sJKAna1MJqVHBmYsgIgMHfTrK/uMRnPz7PtZfcaecQ3vjpFkASj5yrygeRScqY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iobroker.hannah@1.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":50367660},"main":"build/main.js","engines":{"node":">= 22"},"gitHead":"cd785e778fc4ec59b4983ba3c971acd78dcbab16","scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","prepack":"npm run build","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","test:unit":"npm run test:ts","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","verify:package":"node scripts/verify-package-contents.mjs","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:78bd7777-7b60-4a83-a038-49a20401c6b2"}},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.19.1","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"adm-zip":"^0.6.0","@grpc/grpc-js":"^1.14.4","@iobroker/dm-utils":"^3.2.0","@m1kad0/hannah-proto":"^3.8.0","@iobroker/adapter-core":"^3.4.3"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.0.0","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^19.0.0","esptool-js":"^0.6.0","typescript":"~6.0.3","@types/node":"^20.19.43","@types/react":"^19.0.0","@mui/material":"^9.0.0","@emotion/react":"^11.14.0","@types/adm-zip":"^0.5.8","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.2.2","@tsconfig/node22":"^22.0.5","@types/react-dom":"^19.0.0","@iobroker/testing":"^5.3.0","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@m1kad0/esp-nvs-utils":"^0.2.4","@iobroker/eslint-config":"^2.3.4","@iobroker/gui-components":"^10.0.0","@alcalzone/release-script":"^5.2.1","@alcalzone/release-script-plugin-license":"^5.2.2","@alcalzone/release-script-plugin-iobroker":"^5.2.0","@alcalzone/release-script-plugin-manual-review":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_1.1.2_1788896040535_0.10148403241849668","host":"s3://npm-registry-packages-npm-production"}},"1.1.3":{"name":"iobroker.hannah","version":"1.1.3","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@1.1.3","maintainers":[{"name":"bluefox","email":"dogafox@gmail.com"},{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"2626ffe4bf39025eb4114f02ee64b8cefe4da2a9","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-1.1.3.tgz","fileCount":39,"integrity":"sha512-CEGszWb0VqIlJmh/9zldLTjrrulmWHqrFO3Qhh3KyXqqHag7ciZfBZG28dTOtiCKxmAfof2cPYhFbVLYENOBvg==","signatures":[{"sig":"MEUCIQDYqG8q0I7XMJxt7QrevWJYkVyAouofBTeb+obOQiygjAIgTA/Y3723kPFYQoV6LKllVq3s+jNOYL1Zg0rbAibvREI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iobroker.hannah@1.1.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":50728422},"main":"build/main.js","engines":{"node":">= 22"},"gitHead":"04f62589f541bda8142a6d913f3fc9fe7cf9596e","scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","prepack":"npm run build","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","test:unit":"npm run test:ts","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","verify:package":"node scripts/verify-package-contents.mjs","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:78bd7777-7b60-4a83-a038-49a20401c6b2"}},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.19.1","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"adm-zip":"^0.6.0","@grpc/grpc-js":"^1.14.4","@iobroker/dm-utils":"^3.2.0","@m1kad0/hannah-proto":"^3.10.0","@iobroker/adapter-core":"^3.4.3"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.0.0","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^19.0.0","esptool-js":"^0.6.1","typescript":"~6.0.3","@types/node":"^20.19.43","@types/react":"^19.0.0","@mui/material":"^9.4.0","@emotion/react":"^11.14.0","@types/adm-zip":"^0.5.8","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.2.2","@tsconfig/node22":"^22.0.6","@types/react-dom":"^19.2.5","@iobroker/testing":"^5.3.0","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@m1kad0/esp-nvs-utils":"^0.2.4","@iobroker/eslint-config":"^2.3.4","@iobroker/gui-components":"^10.2.1","@alcalzone/release-script":"^5.2.1","@alcalzone/release-script-plugin-license":"^5.2.2","@alcalzone/release-script-plugin-iobroker":"^5.2.0","@alcalzone/release-script-plugin-manual-review":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_1.1.3_1788989559630_0.47957091206069413","host":"s3://npm-registry-packages-npm-production"}},"1.1.4":{"name":"iobroker.hannah","version":"1.1.4","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@1.1.4","maintainers":[{"name":"bluefox","email":"dogafox@gmail.com"},{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"9e6ddc05923b4ae319ed1b97a7f1f4e22949b9c5","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-1.1.4.tgz","fileCount":39,"integrity":"sha512-/RSzzDKlIwoPFv6wf4c4BryD78MtjZggwlLWiZE3p61nMAnBI6EzEVT/rwMltI0W5AlV5xkGhMIoUbS9zGPt+Q==","signatures":[{"sig":"MEYCIQCMxLvLnbLREaluDfFRMZafn6A8NzLW2zTj7OqxWu+QoQIhAIJzCfgoppDUJDRoLFWjQIB+CkCfaLpT+hDR2KT+bGM7","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIDcjXZk2kKJz0nFpt6e3WX8K1EUEyuJwmJz1E3wfzNJ3AiABX/YrIvV583QQMJFHA2ualQAcU5BMtmldXXhC36tm/w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iobroker.hannah@1.1.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":50728042},"main":"build/main.js","engines":{"node":">= 22"},"gitHead":"a4e46dc92e2661817a344b79087e2ed8e01079a6","scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","prepack":"npm run build","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","test:unit":"npm run test:ts","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","verify:package":"node scripts/verify-package-contents.mjs","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:78bd7777-7b60-4a83-a038-49a20401c6b2"}},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.19.1","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"adm-zip":"^0.6.0","@grpc/grpc-js":"^1.14.4","@iobroker/dm-utils":"^3.2.0","@m1kad0/hannah-proto":"^4.0.0","@iobroker/adapter-core":"^3.4.3"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.0.0","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^19.0.0","esptool-js":"^0.6.1","typescript":"~6.0.3","@types/node":"^20.19.43","@types/react":"^19.0.0","@mui/material":"^9.4.0","@emotion/react":"^11.14.0","@types/adm-zip":"^0.5.8","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.2.2","@tsconfig/node22":"^22.0.6","@types/react-dom":"^19.2.5","@iobroker/testing":"^6.2.1","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@m1kad0/esp-nvs-utils":"^0.2.4","@iobroker/eslint-config":"^2.3.4","@iobroker/gui-components":"^10.2.1","@alcalzone/release-script":"^5.2.1","@alcalzone/release-script-plugin-license":"^5.2.2","@alcalzone/release-script-plugin-iobroker":"^5.2.0","@alcalzone/release-script-plugin-manual-review":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_1.1.4_1789306100841_0.27641692917063976","host":"s3://npm-registry-packages-npm-production"}},"1.1.5":{"name":"iobroker.hannah","version":"1.1.5","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@1.1.5","maintainers":[{"name":"bluefox","email":"dogafox@gmail.com"},{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"f514dc163ff64ffa36961d63cd748e5ffce056b2","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-1.1.5.tgz","fileCount":39,"integrity":"sha512-P0bhT57R74EEGsSSZiuHmSkGARua70dgztwjDE66bJVFWPraYTSgQmhnCKdWpru/aHlxw2Owem5AGiBsXn+Ltg==","signatures":[{"sig":"MEQCICdapA2oiPtOr7jfw9KdTU51Yk96UoAZfVXYUbLI84ERAiANB9zQRqPRrIc6l9CXHXLJcaZDsZMhT0KP74MOoJLb1g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIQCEBBwnRIPb1V+j+WtApruuOE2oNgD0HQzYU+YpgyVwKAIfa72XP4J5b5rxwCI5r/bwHZ/jyk4ydRrQTJtF4aAvUQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iobroker.hannah@1.1.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":50736996},"main":"build/main.js","engines":{"node":">= 22"},"gitHead":"f20913dc4ac27b91b91f6634fef295b69ec08ec8","scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","prepack":"npm run build","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","test:unit":"npm run test:ts","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","verify:package":"node scripts/verify-package-contents.mjs","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:78bd7777-7b60-4a83-a038-49a20401c6b2"}},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.19.1","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"adm-zip":"^0.6.0","@grpc/grpc-js":"^1.14.4","@iobroker/dm-utils":"^3.2.0","@m1kad0/hannah-proto":"^4.2.0","@iobroker/adapter-core":"^3.4.3"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.0.0","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^19.0.0","esptool-js":"^0.6.1","typescript":"~6.0.3","@types/node":"^20.19.43","@types/react":"^19.0.0","@mui/material":"^9.4.0","@emotion/react":"^11.14.0","@types/adm-zip":"^0.5.8","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.2.2","@tsconfig/node22":"^22.0.6","@types/react-dom":"^19.2.5","@iobroker/testing":"^6.2.1","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@m1kad0/esp-nvs-utils":"^0.2.4","@iobroker/eslint-config":"^2.3.4","@iobroker/gui-components":"^10.2.1","@alcalzone/release-script":"^5.2.1","@alcalzone/release-script-plugin-license":"^5.2.2","@alcalzone/release-script-plugin-iobroker":"^5.2.0","@alcalzone/release-script-plugin-manual-review":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_1.1.5_1789752596308_0.4237237411668895","host":"s3://npm-registry-packages-npm-production"}},"1.1.6":{"name":"iobroker.hannah","version":"1.1.6","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@1.1.6","maintainers":[{"name":"bluefox","email":"dogafox@gmail.com"},{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"6c47944833503b93b4430dd9aea9b8c217230b88","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-1.1.6.tgz","fileCount":39,"integrity":"sha512-5bcyHuIW6iNTGkiFMPrU28N92nkPl3so7WC0idnhtO8mf1vV7NPNtsS1CpsKAMK5NjJemgTH+FP1nnsYyIzeDQ==","signatures":[{"sig":"MEUCIQCKVTCcy+XooZIg0bouoVaFtYx43I2vlznwlgFx9/EFrAIgCUdiuGUGdX0xhpYGfWYOgpzxWIOdw61c2yXkDQxVIV4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDpWpvxC24X7slfDsJvHbeVPQzleyCWV4WTj16BcFfMxAIhAPMSIGughCMdkXtiiksfUOa8E70rUa17j/L06bw5yLUo","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iobroker.hannah@1.1.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":50734561},"main":"build/main.js","engines":{"node":">= 22"},"gitHead":"ab27dd83853a99efc7618de5eff69c6947e2b0e0","scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","prepack":"npm run build","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","test:unit":"npm run test:ts","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","verify:package":"node scripts/verify-package-contents.mjs","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:78bd7777-7b60-4a83-a038-49a20401c6b2"}},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.19.1","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"adm-zip":"^0.6.0","@grpc/grpc-js":"^1.14.4","@iobroker/dm-utils":"^3.2.0","@m1kad0/hannah-proto":"^4.2.0","@iobroker/adapter-core":"^3.4.3"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.0.0","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^19.0.0","esptool-js":"^0.6.1","typescript":"~6.0.3","@types/node":"^20.19.43","@types/react":"^19.0.0","@mui/material":"^9.4.0","@emotion/react":"^11.14.0","@types/adm-zip":"^0.5.8","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.2.2","@tsconfig/node22":"^22.0.6","@types/react-dom":"^19.2.5","@iobroker/testing":"^6.2.1","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@m1kad0/esp-nvs-utils":"^0.2.4","@iobroker/eslint-config":"^2.3.4","@iobroker/gui-components":"^10.2.1","@alcalzone/release-script":"^5.2.1","@alcalzone/release-script-plugin-license":"^5.2.2","@alcalzone/release-script-plugin-iobroker":"^5.2.0","@alcalzone/release-script-plugin-manual-review":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_1.1.6_1790000175260_0.2793637242901632","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"iobroker.hannah","version":"1.2.0","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@1.2.0","maintainers":[{"name":"bluefox","email":"dogafox@gmail.com"},{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"60a7449680733aea26438c089771338e9ca42df3","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-1.2.0.tgz","fileCount":39,"integrity":"sha512-XyFySmqi/OXUEInsVYvcxXn0zzVZeoFOdDAfyNwVomR+Tfq2cM1+pyx1+E0Y6kUuf+PXDcZDalWZf0l1+Mw6oA==","signatures":[{"sig":"MEYCIQD4/KtrMQ7WahkmXmEQccu12ti+3P+MEfZT0DRAZaonoAIhALhpVDQX/jgP6eIlMN/XS881pAqiurh3S5YYOqYuk6IJ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIGNpkX65+5IqhEIqc3N1QrLy2prtEx0tHpEMPnhzZ8FDAiEArlkCly0l9gP4VEhLbouhornVXEhumMdHgv2bJjiixfk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iobroker.hannah@1.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":50737423},"main":"build/main.js","engines":{"node":">= 22"},"gitHead":"f1dae19b898f5f0d78a97540cb2c7376ffcba537","scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","prepack":"npm run build","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","test:unit":"npm run test:ts","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","verify:package":"node scripts/verify-package-contents.mjs","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:78bd7777-7b60-4a83-a038-49a20401c6b2"}},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.20.0","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"24.21.0","dependencies":{"adm-zip":"^0.6.0","@grpc/grpc-js":"^1.14.4","@iobroker/dm-utils":"^3.2.0","@m1kad0/hannah-proto":"^4.5.0","@iobroker/adapter-core":"^3.4.3","@m1kad0/hannah-logging":"^0.2.0"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.0.0","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^19.0.0","esptool-js":"^0.6.1","typescript":"~6.0.3","@types/node":"^20.19.43","@types/react":"^19.0.0","@mui/material":"^9.4.0","@emotion/react":"^11.14.0","@types/adm-zip":"^0.5.8","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.2.2","@tsconfig/node22":"^22.0.6","@types/react-dom":"^19.2.5","@iobroker/testing":"^6.2.1","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@m1kad0/esp-nvs-utils":"^0.2.4","@iobroker/eslint-config":"^2.3.4","@iobroker/gui-components":"^10.2.1","@alcalzone/release-script":"^5.2.1","@alcalzone/release-script-plugin-license":"^5.2.2","@alcalzone/release-script-plugin-iobroker":"^5.2.0","@alcalzone/release-script-plugin-manual-review":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_1.2.0_1790287980464_0.6230981922761847","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"iobroker.hannah","version":"1.3.0","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@1.3.0","maintainers":[{"name":"bluefox","email":"dogafox@gmail.com"},{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"3157398b99b63209340308260bad95dc42185964","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-1.3.0.tgz","fileCount":47,"integrity":"sha512-PuhhasqB9lHPP2vzq633ag3N3AQLCg8aAc1KeWCP+ay61h/Q6k0joxAZudYOBopOtsRx2PR0JoeNGlbdFTmhww==","signatures":[{"sig":"MEUCIHyML1jSd5c9Oa/Qv7eMXW5mo1GEaC51WRWJYA2SzNe+AiEApwFv+92Xwjmtd8jF1P4/5kf01MaseY5O3vUCRqYsioM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCRERhCDk30n2+bDp74WhoJhyBPxGx29KKQ9IqqmdX+NAIhALhjKpXfRMiT874dgSFF6ALkQflR+KF6iuhv6MkqyccR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iobroker.hannah@1.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":50777283},"main":"build/main.js","engines":{"node":">= 22"},"gitHead":"f8c070f1ee0af8c429284c98ea64f2cc221fd2e6","scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","prepack":"npm run build","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","test:unit":"npm run test:ts","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","verify:package":"node scripts/verify-package-contents.mjs","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:78bd7777-7b60-4a83-a038-49a20401c6b2"}},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.20.0","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"24.21.0","dependencies":{"adm-zip":"^0.6.0","@grpc/grpc-js":"^1.14.4","@iobroker/dm-utils":"^3.2.0","@m1kad0/hannah-proto":"^4.5.0","@iobroker/adapter-core":"^3.4.3","@m1kad0/hannah-logging":"^0.2.0"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.0.0","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^19.0.0","esptool-js":"^0.6.1","typescript":"~6.0.3","@types/node":"^20.19.43","@types/react":"^19.0.0","@mui/material":"^9.4.0","@emotion/react":"^11.14.0","@types/adm-zip":"^0.5.8","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.2.2","@tsconfig/node22":"^22.0.6","@types/react-dom":"^19.2.5","@iobroker/testing":"^6.2.1","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@m1kad0/esp-nvs-utils":"^0.2.4","@iobroker/eslint-config":"^2.3.4","@iobroker/gui-components":"^10.2.1","@alcalzone/release-script":"^5.2.1","@alcalzone/release-script-plugin-license":"^5.2.2","@alcalzone/release-script-plugin-iobroker":"^5.2.0","@alcalzone/release-script-plugin-manual-review":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_1.3.0_1790435488998_0.7331797516589549","host":"s3://npm-registry-packages-npm-production"}},"1.3.1":{"name":"iobroker.hannah","version":"1.3.1","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@1.3.1","maintainers":[{"name":"bluefox","email":"dogafox@gmail.com"},{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"98c0ede216a38d3223bcc0f4df4264e2f5e158e1","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-1.3.1.tgz","fileCount":47,"integrity":"sha512-5KRiZRBZcvNOni567rieK6vWVEsPeUAKCbiFd/dh5NuISIwyv5xCTJYo1GQZpzzY64oXoM3bruqLZrghATW5Ew==","signatures":[{"sig":"MEUCIQCrILwrU2y/AORl0JkTmSoccjgv4serKqzHnFG/+QGZ5AIgU6DMqtGJERw9tdpFBtwng77soW0jqW4M95NHLkiGCH8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIEB8H1a3qwJuU+CKRm5XH31ZkFEZSEv+ed6cQzxOo/ieAiEAjbWuwaIRjWL0Ty7q7gLRVH6DksFYrd63jFO4UpL1ZOk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iobroker.hannah@1.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":50776544},"main":"build/main.js","engines":{"node":">= 22"},"gitHead":"76745d765eecca4836302bc75c85e40741a3c8c1","scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","prepack":"npm run build","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","test:unit":"npm run test:ts","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","verify:package":"node scripts/verify-package-contents.mjs","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:78bd7777-7b60-4a83-a038-49a20401c6b2"}},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.20.0","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"24.21.0","dependencies":{"adm-zip":"^0.6.0","@grpc/grpc-js":"^1.14.4","@iobroker/dm-utils":"^3.2.0","@m1kad0/hannah-proto":"^4.5.0","@iobroker/adapter-core":"^3.4.3","@m1kad0/hannah-logging":"^0.2.1"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.0.0","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^19.0.0","esptool-js":"^0.6.1","typescript":"~6.0.3","@types/node":"^20.19.43","@types/react":"^19.0.0","@mui/material":"^9.4.0","@emotion/react":"^11.14.0","@types/adm-zip":"^0.5.8","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.2.2","@tsconfig/node22":"^22.0.6","@types/react-dom":"^19.2.5","@iobroker/testing":"^6.2.1","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@m1kad0/esp-nvs-utils":"^0.2.4","@iobroker/eslint-config":"^2.3.4","@iobroker/gui-components":"^10.2.1","@alcalzone/release-script":"^5.2.1","@alcalzone/release-script-plugin-license":"^5.2.2","@alcalzone/release-script-plugin-iobroker":"^5.2.0","@alcalzone/release-script-plugin-manual-review":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_1.3.1_1790452665585_0.5283467657346981","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"iobroker.hannah","version":"1.4.0","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@1.4.0","maintainers":[{"name":"bluefox","email":"dogafox@gmail.com"},{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"87b79d696e8d096ae2af33ef2652d4f63d4614fb","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-1.4.0.tgz","fileCount":47,"integrity":"sha512-c7mb7UB1xeQBb2UsGtdXtklmVDhEnSfRPtuobeNc3ckYds4/NS8KSm1uXngjAUgeQ6nAePkkOMsMZHzPyOFilA==","signatures":[{"sig":"MEUCIDVJvlOJnN4pTZG/tH8kaI6K3dCxKOXL9+miDMv5DZx/AiEA7SaXESOHEp9/23JRc/69CgeaNkDz7liHjBMqq1xlY64=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIAWE3t4RWQRpqxeah7mFnWMwryGR1WE+G5EEkBMuDCzpAiEA4Ly4u9VnIvyCC9ICGaiu/kjrghVDP4s/PvF+oWhSK6M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iobroker.hannah@1.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":50780027},"main":"build/main.js","engines":{"node":">= 22"},"gitHead":"0efa7ab9bc21362949026f70a205022c7e0dd480","scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","prepack":"npm run build","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","test:unit":"npm run test:ts","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","verify:package":"node scripts/verify-package-contents.mjs","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:78bd7777-7b60-4a83-a038-49a20401c6b2"}},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.20.0","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"24.21.0","dependencies":{"adm-zip":"^0.6.0","@grpc/grpc-js":"^1.14.4","@iobroker/dm-utils":"^3.2.0","@m1kad0/hannah-proto":"^4.6.2","@iobroker/adapter-core":"^3.4.3","@m1kad0/hannah-grpc-lib":"^0.4.0"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.0.0","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^19.0.0","esptool-js":"^0.6.1","typescript":"~6.0.3","@types/node":"^20.19.43","@types/react":"^19.0.0","@mui/material":"^9.4.0","@emotion/react":"^11.14.0","@types/adm-zip":"^0.5.8","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.2.2","@tsconfig/node22":"^22.0.6","@types/react-dom":"^19.2.5","@iobroker/testing":"^6.2.1","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@m1kad0/esp-nvs-utils":"^0.2.4","@iobroker/eslint-config":"^2.3.4","@iobroker/gui-components":"^10.2.1","@alcalzone/release-script":"^5.2.1","@alcalzone/release-script-plugin-license":"^5.2.2","@alcalzone/release-script-plugin-iobroker":"^5.2.0","@alcalzone/release-script-plugin-manual-review":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_1.4.0_1790471420478_0.056293816039226785","host":"s3://npm-registry-packages-npm-production"}},"1.4.1":{"name":"iobroker.hannah","version":"1.4.1","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@1.4.1","maintainers":[{"name":"bluefox","email":"dogafox@gmail.com"},{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"3d0898012938f84ae2f620e5951d67e8f5a9e5e3","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-1.4.1.tgz","fileCount":47,"integrity":"sha512-HvQ5lhyUhVY0BQQoFL/Bs5YER7MmBZmtnPsNUkA2bD7VACRZK7kwW1zMJIzAqx6u/Vuvw9eQCEc+3zPrRgrlAg==","signatures":[{"sig":"MEQCIEL51//TMwlhVDY4VujOZ/77zC1HdQulZGjOfo9LKj1yAiB5Gb5rG1Fj/TpDBhVh64XvogfqWbAvJYK7MqGtLy1XiA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIHKvraKf0bx6wwJ4BIh4F/Lwb5yKgRxeVy2tL/+3CWyEAiAgWQmc8DtgbW9Wqcshj4IWC7lbI7T2UFTqBDeBkeORhg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iobroker.hannah@1.4.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":50776585},"main":"build/main.js","engines":{"node":">= 22"},"gitHead":"031658d94ec26ad96e1d4e53e06cbe537b5afe63","scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","prepack":"npm run build","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","test:unit":"npm run test:ts","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","verify:package":"node scripts/verify-package-contents.mjs","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:78bd7777-7b60-4a83-a038-49a20401c6b2"}},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.20.0","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"24.21.0","dependencies":{"adm-zip":"^0.6.0","@grpc/grpc-js":"^1.14.4","@iobroker/dm-utils":"^3.2.0","@m1kad0/hannah-proto":"^4.6.3","@iobroker/adapter-core":"^3.4.3","@m1kad0/hannah-grpc-lib":"^0.5.0"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.0.0","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^19.0.0","esptool-js":"^0.6.1","typescript":"~6.0.3","@types/node":"^20.19.43","@types/react":"^19.0.0","@mui/material":"^9.4.0","@emotion/react":"^11.14.0","@types/adm-zip":"^0.5.8","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.2.2","@tsconfig/node22":"^22.0.6","@types/react-dom":"^19.2.5","@iobroker/testing":"^6.2.1","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@m1kad0/esp-nvs-utils":"^0.2.4","@iobroker/eslint-config":"^2.3.4","@iobroker/gui-components":"^10.2.1","@alcalzone/release-script":"^5.2.1","@alcalzone/release-script-plugin-license":"^5.2.2","@alcalzone/release-script-plugin-iobroker":"^5.2.0","@alcalzone/release-script-plugin-manual-review":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_1.4.1_1790476585603_0.19218715134053488","host":"s3://npm-registry-packages-npm-production"}},"1.4.2":{"name":"iobroker.hannah","version":"1.4.2","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@1.4.2","maintainers":[{"name":"bluefox","email":"dogafox@gmail.com"},{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"324beada05f05bfddc1c5656b74d7fa24fd27ae3","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-1.4.2.tgz","fileCount":47,"integrity":"sha512-ZcqX/Gpc/G4Swf8Q2auYVcaZwOd09SeYlkWkPbb8vu42OQoBHm3knASPIAqXTXARc0/xC079jcwWQATNBVBImg==","signatures":[{"sig":"MEYCIQDXaie1HKoOx2DiOQFt9whxs72smvr7aMlklJRunuUN4QIhAKE7FK5IS0OIr7mmw8rzmcYWiu+AhzmX7CVKhvDvh8WK","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIHTkcJHvKOey6SevFfuviZ79GB9VPOscTrRVmXMow0JMAiArp3/2Ub6k7zWvWOzUzIGfImaQ7Kz48FHY7EUtoantgA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iobroker.hannah@1.4.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":50774535},"main":"build/main.js","engines":{"node":">= 22"},"gitHead":"1327e8ae6fda7d1e7e2ad2f23c3fd2715c4530c7","scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","prepack":"npm run build","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","test:unit":"npm run test:ts","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","verify:package":"node scripts/verify-package-contents.mjs","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:78bd7777-7b60-4a83-a038-49a20401c6b2"}},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.20.0","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"24.21.0","dependencies":{"adm-zip":"^0.6.0","@grpc/grpc-js":"^1.14.4","@iobroker/dm-utils":"^3.2.0","@m1kad0/hannah-proto":"^4.6.3","@iobroker/adapter-core":"^3.4.3","@m1kad0/hannah-grpc-lib":"^0.5.0"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.0.0","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^19.0.0","esptool-js":"^0.6.1","typescript":"~6.0.3","@types/node":"^20.19.43","@types/react":"^19.0.0","@mui/material":"^9.4.0","@emotion/react":"^11.14.0","@types/adm-zip":"^0.5.8","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.2.2","@tsconfig/node22":"^22.0.6","@types/react-dom":"^19.2.5","@iobroker/testing":"^6.2.1","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@m1kad0/esp-nvs-utils":"^0.2.4","@iobroker/eslint-config":"^2.3.4","@iobroker/gui-components":"^10.2.1","@alcalzone/release-script":"^5.2.1","@alcalzone/release-script-plugin-license":"^5.2.2","@alcalzone/release-script-plugin-iobroker":"^5.2.0","@alcalzone/release-script-plugin-manual-review":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_1.4.2_1790478994758_0.5037539403901712","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"iobroker.hannah","version":"1.5.0","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@1.5.0","maintainers":[{"name":"bluefox","email":"dogafox@gmail.com"},{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"21c27262e86e3079ec9bd7026c8fe9b94ce27230","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-1.5.0.tgz","fileCount":47,"integrity":"sha512-Ldlm/dpVGXgiXWAxaMtyp3ec4ryl/0XGFNIki0VbBYBxIWdW2byetc/Eq0GimaxV8Gvoe+jVi8p8tK6yvi7nZQ==","signatures":[{"sig":"MEUCIQChtjvkXkSsy4tM/kBspAksXqeKtCHxAhh911pH8+TliQIgC8qwkJKPLUUpXKJChSwCiA3kM2v8yYlkpmObCLM2TOI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCIRWyvNNjEwuK8hWTib8HVSTPUhuOK+qt/bsGlTALuIQIhANxpfbzkZGn7GXVqnjSIPuFa+PSHHUtaM7zzZt74Pet/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iobroker.hannah@1.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":50808667},"main":"build/main.js","engines":{"node":">= 22"},"gitHead":"993aa8ee3b2d7904e165353e7354e61de08a7649","scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","prepack":"npm run build","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","test:unit":"npm run test:ts","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","verify:package":"node scripts/verify-package-contents.mjs","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:78bd7777-7b60-4a83-a038-49a20401c6b2"}},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.20.0","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"24.21.0","dependencies":{"adm-zip":"^0.6.0","@grpc/grpc-js":"^1.14.4","@iobroker/dm-utils":"^3.2.0","@m1kad0/hannah-proto":"^4.7.1","@iobroker/adapter-core":"^3.4.3","@m1kad0/hannah-grpc-lib":"^0.5.0"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.0.0","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^19.0.0","esptool-js":"^0.6.1","typescript":"~6.0.3","@types/node":"^20.19.43","@types/react":"^19.0.0","@mui/material":"^9.4.0","@emotion/react":"^11.14.0","@types/adm-zip":"^0.5.8","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.2.2","@tsconfig/node22":"^22.0.6","@types/react-dom":"^19.2.5","@iobroker/testing":"^6.2.2","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@m1kad0/esp-nvs-utils":"^0.2.4","@iobroker/eslint-config":"^2.3.4","@iobroker/gui-components":"^10.2.1","@alcalzone/release-script":"^5.2.1","@alcalzone/release-script-plugin-license":"^5.2.2","@alcalzone/release-script-plugin-iobroker":"^5.2.0","@alcalzone/release-script-plugin-manual-review":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_1.5.0_1790519237348_0.5198708854936405","host":"s3://npm-registry-packages-npm-production"}},"1.5.1":{"name":"iobroker.hannah","version":"1.5.1","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@1.5.1","maintainers":[{"name":"bluefox","email":"dogafox@gmail.com"},{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"2f67c2ae4dcf9e375c1d558f4f5ebc8ec23ce804","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-1.5.1.tgz","fileCount":47,"integrity":"sha512-OSoL2ozlisrllaTu2EKHECllS3DxAqzHfWZAYsBRYem4AUEFPTFMhXrPdWQKXhrb9LNU/7O9MuGuXWqn+081Pg==","signatures":[{"sig":"MEYCIQDGlHA3LGXQZfW+GU+36LFJ/7CeQYTUCvx1pISNGEvz+gIhAJK6+ZF6KzCQU6vSTLbpudGFuB+KMyWYNk8NVdjWTR9e","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDCwovqDtDYl6NzdmUKV+8vawBWKYHHj3gh0lsTaP19EgIgO5jET3/xTaPNgWCv60KIKprfJTHsRqCHGLyW/v3oyGM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iobroker.hannah@1.5.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":50807813},"main":"build/main.js","engines":{"node":">= 22"},"gitHead":"1b9b379dec0be45161f343aea6a8fae7b9f4f519","scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","prepack":"npm run build","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","test:unit":"npm run test:ts","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","verify:package":"node scripts/verify-package-contents.mjs","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:78bd7777-7b60-4a83-a038-49a20401c6b2"}},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.20.0","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"24.21.0","dependencies":{"adm-zip":"^0.6.0","@grpc/grpc-js":"^1.14.4","@iobroker/dm-utils":"^3.2.0","@m1kad0/hannah-proto":"^4.7.1","@iobroker/adapter-core":"^3.4.3","@m1kad0/hannah-grpc-lib":"^0.5.0"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.0.0","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^19.0.0","esptool-js":"^0.6.1","typescript":"~6.0.3","@types/node":"^20.19.43","@types/react":"^19.0.0","@mui/material":"^9.4.0","@emotion/react":"^11.14.0","@types/adm-zip":"^0.5.8","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.2.2","@tsconfig/node22":"^22.0.6","@types/react-dom":"^19.2.5","@iobroker/testing":"^6.2.2","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@m1kad0/esp-nvs-utils":"^0.2.4","@iobroker/eslint-config":"^2.3.4","@iobroker/gui-components":"^10.2.1","@alcalzone/release-script":"^5.2.1","@alcalzone/release-script-plugin-license":"^5.2.2","@alcalzone/release-script-plugin-iobroker":"^5.2.0","@alcalzone/release-script-plugin-manual-review":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_1.5.1_1790615809656_0.3254542215011411","host":"s3://npm-registry-packages-npm-production"}},"1.5.2":{"name":"iobroker.hannah","version":"1.5.2","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@1.5.2","maintainers":[{"name":"bluefox","email":"dogafox@gmail.com"},{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"a59e1256e8d1217c71ab22b5f6b767a2a0c31d5b","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-1.5.2.tgz","fileCount":47,"integrity":"sha512-m7AebzXWiQXRWahOjWX7drt1fbtYJPtp8GsHlKKMlyp2nZysFPaqz4ztIzf0Kcg5To7xNOYLKK9RWDa0yzYuJA==","signatures":[{"sig":"MEYCIQDYqOrVKZ+yyQeN3t4z/wa11GWgO29CChhKVmGKLUfgQgIhAL4iBuOzs7sdQI9j7VXDb5AN8hm/Rg0cwdyfa36AJ5Kf","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIEgaAWtuHUfrkRIZpO4Qp/1GGG67ejNu0eyjPeRrBgDoAiBEl1NzMDfV+Iod1xSRwtKK7kLRF1WH69yt6nUCG/pv0Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iobroker.hannah@1.5.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":50800286},"main":"build/main.js","engines":{"node":">= 22"},"gitHead":"9c9ad952efdfd24eea9cec0c5a223591312f5c09","scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","prepack":"npm run build","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","test:unit":"npm run test:ts","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","verify:package":"node scripts/verify-package-contents.mjs","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"78bd7777-7b60-4a83-a038-49a20401c6b2"}},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.20.0","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"24.21.0","dependencies":{"adm-zip":"^0.6.0","@grpc/grpc-js":"^1.14.4","@iobroker/dm-utils":"^3.2.0","@m1kad0/hannah-proto":"^4.8.0","@iobroker/adapter-core":"^3.4.3","@m1kad0/hannah-grpc-lib":"^0.5.0"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.0.0","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^19.0.0","esptool-js":"^0.6.1","typescript":"~6.0.3","@types/node":"^20.19.43","@types/react":"^19.0.0","@mui/material":"^9.4.0","@emotion/react":"^11.14.0","@types/adm-zip":"^0.5.8","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.2.2","@tsconfig/node22":"^22.0.6","@types/react-dom":"^19.2.5","@iobroker/testing":"^6.2.2","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@m1kad0/esp-nvs-utils":"^0.2.4","@iobroker/eslint-config":"^2.3.4","@iobroker/gui-components":"^10.2.1","@alcalzone/release-script":"^5.2.1","@alcalzone/release-script-plugin-license":"^5.2.2","@alcalzone/release-script-plugin-iobroker":"^5.2.0","@alcalzone/release-script-plugin-manual-review":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_1.5.2_1790703012245_0.07909895965567793","host":"s3://npm-registry-packages-npm-production"}},"1.5.3":{"name":"iobroker.hannah","version":"1.5.3","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@1.5.3","maintainers":[{"name":"bluefox","email":"dogafox@gmail.com"},{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"f0faadb62a5e4444ff0f68c99b6cb0738bb8aa15","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-1.5.3.tgz","fileCount":51,"integrity":"sha512-iig7kvg3/Th1GTpJGs8MSlz2Q1gEIULe2Yq1r12dL1cBBaPRwaWX8vaTNXibGNI6XNMlH913hdWUiuTw40YtlQ==","signatures":[{"sig":"MEUCIHR7ltzSBYLGPI7w82mo8oU9bwKE8p8c7kFupWQT1B9+AiEA9hcr/0VGBe+pNZ7e56QIdp48n6xgsAVwyAVme9/PIL0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIG7QPr3S29QQIfJrUxx17WtBIueWme2RV1INhPgeJ3XiAiEA1KLhfxQkKaLBBaqiKNsv8hr/49bzHfCLDv/2QT+AzQ8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iobroker.hannah@1.5.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":50876536},"main":"build/main.js","engines":{"node":">= 22"},"gitHead":"0c98de708043fbf835526880af14b73f79192ab7","scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","prepack":"npm run build","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","test:unit":"npm run test:ts","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","verify:package":"node scripts/verify-package-contents.mjs","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"78bd7777-7b60-4a83-a038-49a20401c6b2"}},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.21.0","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"24.21.0","dependencies":{"adm-zip":"^0.6.0","@grpc/grpc-js":"^1.14.4","@iobroker/dm-utils":"^3.2.0","@m1kad0/hannah-proto":"^5.1.0","@iobroker/adapter-core":"^3.4.3","@m1kad0/hannah-grpc-lib":"^0.7.0"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.0.0","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^19.0.0","esptool-js":"^0.6.1","typescript":"~6.0.3","@types/node":"^20.19.43","@types/react":"^19.0.0","@mui/material":"^9.4.0","@emotion/react":"^11.14.0","@types/adm-zip":"^0.5.8","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.2.2","@tsconfig/node22":"^22.0.6","@types/react-dom":"^19.2.5","@iobroker/testing":"^6.2.2","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@m1kad0/esp-nvs-utils":"^0.2.4","@iobroker/eslint-config":"^2.3.4","@iobroker/gui-components":"^10.2.1","@alcalzone/release-script":"^5.2.1","@alcalzone/release-script-plugin-license":"^5.2.2","@alcalzone/release-script-plugin-iobroker":"^5.2.0","@alcalzone/release-script-plugin-manual-review":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_1.5.3_1790867764096_0.6246213366063951","host":"s3://npm-registry-packages-npm-production"}},"1.5.4":{"name":"iobroker.hannah","version":"1.5.4","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@1.5.4","maintainers":[{"name":"bluefox","email":"dogafox@gmail.com"},{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"afed7b505f7b00f0651162b34f8c80fb82142225","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-1.5.4.tgz","fileCount":51,"integrity":"sha512-EPaCmgyymOzProstDmMgGpAe3NMDSsVGp22NpfVwv/QuhQ+0ZxYs7DXFWF0nCsCdN/cyWhM9J0rGctI6CD05yA==","signatures":[{"sig":"MEYCIQCf4WGGfGiP+Xy68gxrf1stgD28YeGKxHwYsU91FpxsQAIhAJOkTwOJBpZbz2NzhSWCPFE6GIGLAVI//fqVPeO7vDjH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIERE6Zw7Zbnf1shxxfwy8SIhOPXkHhCxzawwKHG4mczxAiB5+0pJNxyHY2h7kvMuiCFUc2dtLxnZq39PuH68nLJM1g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iobroker.hannah@1.5.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":50880806},"main":"build/main.js","engines":{"node":">= 22"},"gitHead":"7cee68ed457a6f105d755a5ee6a8b7d64b5a4cbb","scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","prepack":"npm run build","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","test:unit":"npm run test:ts","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","verify:package":"node scripts/verify-package-contents.mjs","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"78bd7777-7b60-4a83-a038-49a20401c6b2"}},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.21.0","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"24.21.0","dependencies":{"adm-zip":"^0.6.0","@grpc/grpc-js":"^1.14.4","@iobroker/dm-utils":"^3.2.0","@m1kad0/hannah-proto":"^5.2.0","@iobroker/adapter-core":"^3.4.3","@m1kad0/hannah-grpc-lib":"^0.7.0"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.0.0","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^19.0.0","esptool-js":"^0.6.1","typescript":"~6.0.3","@types/node":"^20.19.43","@types/react":"^19.0.0","@mui/material":"^9.4.0","@emotion/react":"^11.14.0","@types/adm-zip":"^0.5.8","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.2.2","@tsconfig/node22":"^22.0.6","@types/react-dom":"^19.2.5","@iobroker/testing":"^6.2.2","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@m1kad0/esp-nvs-utils":"^0.2.4","@iobroker/eslint-config":"^2.3.4","@iobroker/gui-components":"^10.2.1","@alcalzone/release-script":"^5.2.1","@alcalzone/release-script-plugin-license":"^5.2.2","@alcalzone/release-script-plugin-iobroker":"^5.2.0","@alcalzone/release-script-plugin-manual-review":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_1.5.4_1790874046393_0.7641725084055293","host":"s3://npm-registry-packages-npm-production"}},"1.5.5":{"name":"iobroker.hannah","version":"1.5.5","keywords":["hannah","gRPC","voice assistant","ioBroker"],"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","_id":"iobroker.hannah@1.5.5","maintainers":[{"name":"bluefox","email":"dogafox@gmail.com"},{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"contributors":[],"homepage":"https://github.com/NurPech/ioBroker.hannah","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"8d0045477412692e5bda77147489c20848d5b8e3","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-1.5.5.tgz","fileCount":51,"integrity":"sha512-ADMz4DaUTIIqPomyoMmgiVx4KPtn+u6clJSmxhqGwRmyvE+bm/FhYTJp6KPud0ccVIOwLXx0IvnwNuFUiQHZOQ==","signatures":[{"sig":"MEYCIQCroLuSSD7nP6DqMy/8U/FPhkp8AVJ+aLuCt7y9GazQtgIhAKj+vHzueA6iseY5n/7SoQQfUPA7+SIgmOl7Bz7VfIBU","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIFwL8CSzSiSiD5emw0yD4vIDHI37j0ebqCfc/wday/c8AiBsF0X6qcGSP56XmahSpSTF/YP4Q1GVCUg3L/19A4za9g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iobroker.hannah@1.5.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":51797154},"main":"build/main.js","engines":{"node":">= 22"},"gitHead":"a0e3ad735d6f0c3f31fe746425502c17b6f6db77","scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","prepack":"npm run build","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","test:unit":"npm run test:ts","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","verify:package":"node scripts/verify-package-contents.mjs","test:integration":"mocha test/integration --exit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"78bd7777-7b60-4a83-a038-49a20401c6b2"}},"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.21.0","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"_nodeVersion":"24.21.0","dependencies":{"adm-zip":"^0.6.1","@grpc/grpc-js":"^1.14.5","@iobroker/dm-utils":"^3.2.1","@m1kad0/hannah-proto":"^5.3.0","@iobroker/adapter-core":"^3.4.3","@m1kad0/hannah-grpc-lib":"^0.9.0"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.3.0","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^19.3.0","esptool-js":"^0.7.0","typescript":"~6.0.3","@types/node":"^20.19.43","@types/react":"^19.3.0","@mui/material":"^9.4.0","@emotion/react":"^11.14.0","@types/adm-zip":"^0.5.8","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.2.2","@tsconfig/node22":"^22.0.6","@types/react-dom":"^19.3.0","@iobroker/testing":"^6.3.0","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@m1kad0/esp-nvs-utils":"^0.2.5","@iobroker/eslint-config":"^2.3.4","@iobroker/gui-components":"^10.3.5","@alcalzone/release-script":"^5.2.1","@alcalzone/release-script-plugin-license":"^5.2.2","@alcalzone/release-script-plugin-iobroker":"^5.2.0","@alcalzone/release-script-plugin-manual-review":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/iobroker.hannah_1.5.5_1790990516362_0.7624089180417204","host":"s3://npm-registry-packages-npm-production"}},"1.6.0":{"_id":"iobroker.hannah@1.6.0","bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"dist":{"shasum":"30ef83c00841ac0dad35467a8addddc113d0a8f3","tarball":"https://registry.npmjs.org/iobroker.hannah/-/iobroker.hannah-1.6.0.tgz","fileCount":55,"integrity":"sha512-KSp492QbDhBJAJdjiZLl7L8mKzxKTh1+uQBQUVERs4J73TJxEWNDuiEW9mfstpEVH4iCQeXv5jHSft8PPbReZg==","signatures":[{"sig":"MEYCIQDKUbLuNptB5GPCxnwwhrSWrNy3J2K2P5XOkgJEEkWu4AIhAOpzLdc8mkv4jQkupTQ/Tz+vn3LqWnUDCZc5sQdyd+p3","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIA0WgovfcKSAEkKiRoBJxkLmTquVhw28nZI++GAWIBAqAiEA+5m8aOUKedLIYl588msvpIiTZp6thu8Jtrd8ad0pRPA="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/iobroker.hannah@1.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":51907673},"main":"build/main.js","name":"iobroker.hannah","author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"engines":{"node":">= 22"},"gitHead":"0c0b8a38ce0c80a0f7823925f499aa3faadd01b3","license":"MIT","scripts":{"lint":"eslint -c eslint.config.mjs .","test":"npm run test:ts && npm run test:package","build":"build-adapter all","check":"tsc --noEmit && tsc --noEmit -p admin/tsconfig.json","watch":"build-adapter all --watch","prepack":"npm run build","release":"release-script","test:ts":"mocha --config test/mocharc.custom.json src/**/*.test.ts","build:ts":"build-adapter ts","prebuild":"rimraf build admin/build","watch:ts":"build-adapter ts --watch","test:unit":"npm run test:ts","translate":"translate-adapter","dev-server":"dev-server","build:react":"build-adapter react","prebuild:ts":"rimraf build","watch:react":"build-adapter react --watch","test:package":"mocha test/package --exit","prebuild:react":"rimraf admin/build","verify:package":"node scripts/verify-package-contents.mjs","test:integration":"mocha test/integration --exit"},"version":"1.6.0","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"78bd7777-7b60-4a83-a038-49a20401c6b2"}},"homepage":"https://github.com/NurPech/ioBroker.hannah","keywords":["hannah","gRPC","voice assistant","ioBroker"],"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"_npmVersion":"11.21.0","description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","directories":{},"maintainers":[{"name":"bluefox","email":"dogafox@gmail.com"},{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"_nodeVersion":"24.21.0","contributors":[],"dependencies":{"adm-zip":"^0.6.1","@grpc/grpc-js":"^1.14.5","@iobroker/dm-utils":"^3.2.1","@m1kad0/hannah-proto":"^5.3.0","@iobroker/adapter-core":"^3.4.3","@iobroker/type-detector":"6.0.1","@m1kad0/hannah-grpc-lib":"^0.9.0"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.3.0","rimraf":"^6.1.3","ts-node":"^10.9.2","react-dom":"^19.3.0","esptool-js":"^0.7.0","typescript":"~6.0.3","@types/node":"^20.19.43","@types/react":"^19.3.0","@mui/material":"^9.4.0","@emotion/react":"^11.14.0","@types/adm-zip":"^0.5.8","@emotion/styled":"^11.14.1","@types/iobroker":"npm:@iobroker/types@^7.2.2","@tsconfig/node22":"^22.0.6","@types/react-dom":"^19.3.0","@iobroker/testing":"^6.3.0","source-map-support":"^0.5.21","@iobroker/dev-server":"^0.8.0","@iobroker/adapter-dev":"^1.5.0","@m1kad0/esp-nvs-utils":"^0.2.5","@iobroker/eslint-config":"^2.3.4","@iobroker/gui-components":"^10.3.5","@alcalzone/release-script":"^5.2.1","@alcalzone/release-script-plugin-license":"^5.2.2","@alcalzone/release-script-plugin-iobroker":"^5.2.0","@alcalzone/release-script-plugin-manual-review":"^5.2.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/iobroker.hannah_1.6.0_1791058599838_0.6257223115691781"}}},"time":{"created":"2026-04-27T18:39:48.397Z","modified":"2026-10-03T20:16:40.385Z","0.0.1":"2026-04-27T18:39:48.768Z","0.0.2":"2026-04-28T17:24:45.358Z","0.1.0":"2026-04-30T13:54:15.816Z","0.2.0":"2026-04-30T18:50:16.866Z","0.2.1":"2026-05-01T13:46:11.202Z","0.3.0":"2026-05-02T19:05:21.653Z","0.3.1":"2026-05-02T20:28:51.548Z","0.3.2":"2026-05-03T02:00:17.119Z","0.4.0":"2026-05-03T19:57:38.801Z","0.4.1":"2026-05-04T12:29:30.140Z","0.4.2":"2026-05-04T15:08:52.340Z","0.5.0":"2026-05-06T20:57:43.599Z","0.6.0":"2026-05-22T23:37:52.560Z","0.7.0":"2026-05-23T21:24:26.952Z","0.8.0":"2026-05-24T01:17:46.192Z","0.9.0":"2026-05-24T18:27:35.866Z","0.10.0":"2026-05-25T12:58:49.652Z","0.11.0":"2026-05-27T20:57:27.831Z","0.11.1":"2026-06-01T22:13:03.034Z","0.11.2":"2026-06-01T22:54:27.176Z","0.11.3":"2026-06-02T16:13:17.537Z","0.12.0":"2026-06-04T20:49:07.596Z","0.12.1":"2026-06-04T22:01:47.279Z","0.13.0":"2026-06-05T19:42:42.606Z","0.14.0":"2026-06-09T20:51:55.657Z","0.15.0":"2026-06-11T21:49:43.648Z","0.15.1":"2026-06-11T22:23:41.863Z","0.15.2":"2026-06-12T23:03:51.406Z","0.15.3":"2026-06-13T13:55:04.574Z","0.16.0":"2026-06-16T14:48:08.038Z","0.17.0":"2026-06-16T21:52:09.672Z","0.18.0":"2026-06-18T16:14:28.403Z","0.19.0":"2026-06-18T19:06:28.461Z","0.19.1":"2026-06-18T20:11:56.861Z","0.20.0":"2026-06-18T21:10:05.990Z","0.21.0":"2026-06-18T22:35:15.687Z","0.21.1":"2026-06-19T13:29:07.341Z","0.22.0":"2026-06-19T15:25:22.501Z","0.23.0":"2026-06-19T17:10:25.783Z","0.24.0":"2026-06-19T21:41:29.539Z","0.24.1":"2026-06-20T11:37:57.968Z","0.25.0":"2026-06-20T17:53:54.712Z","0.26.0":"2026-06-21T11:33:25.899Z","0.26.1":"2026-06-25T11:03:28.831Z","0.27.0":"2026-06-26T00:43:32.152Z","0.27.1":"2026-06-27T17:39:06.027Z","0.28.0":"2026-06-29T21:54:36.367Z","0.29.0":"2026-06-30T15:15:01.755Z","0.29.1":"2026-06-30T15:51:50.109Z","0.29.2":"2026-06-30T17:10:45.929Z","0.30.0":"2026-07-02T22:43:25.503Z","0.30.1":"2026-07-03T20:12:27.037Z","0.30.2":"2026-07-04T22:16:06.538Z","0.30.3":"2026-07-05T13:12:37.024Z","0.31.0":"2026-07-08T16:26:52.314Z","0.31.1":"2026-07-08T21:00:34.750Z","0.31.3":"2026-07-09T15:12:30.312Z","0.32.0":"2026-07-11T15:32:10.001Z","0.32.1":"2026-07-11T18:52:38.223Z","0.32.2":"2026-07-12T12:30:23.529Z","0.32.3":"2026-07-12T14:09:07.176Z","0.31.2":"2026-07-13T18:36:56.418Z","0.32.4":"2026-07-13T19:42:04.692Z","0.32.5":"2026-07-15T20:48:06.178Z","0.32.6":"2026-07-26T19:59:33.972Z","0.33.0":"2026-08-01T15:26:55.495Z","0.33.1":"2026-08-01T16:55:23.682Z","0.33.2":"2026-08-01T21:09:56.100Z","0.33.3":"2026-08-03T20:49:12.003Z","0.33.4":"2026-08-04T23:14:02.768Z","0.34.0":"2026-08-05T17:34:51.643Z","0.34.1":"2026-08-05T20:14:32.554Z","0.34.2":"2026-08-05T20:55:03.250Z","1.0.0":"2026-08-06T17:35:14.878Z","1.0.1":"2026-08-06T20:25:58.250Z","1.0.2":"2026-08-09T15:51:09.709Z","1.1.0":"2026-09-06T00:02:12.309Z","1.1.1":"2026-09-06T01:32:52.033Z","1.1.2":"2026-09-08T19:34:00.843Z","1.1.3":"2026-09-09T21:32:39.957Z","1.1.4":"2026-09-13T13:28:21.069Z","1.1.5":"2026-09-18T17:29:56.537Z","1.1.6":"2026-09-21T14:16:15.512Z","1.2.0":"2026-09-24T22:13:00.822Z","1.3.0":"2026-09-26T15:11:29.250Z","1.3.1":"2026-09-26T19:57:45.818Z","1.4.0":"2026-09-27T01:10:20.713Z","1.4.1":"2026-09-27T02:36:25.842Z","1.4.2":"2026-09-27T03:16:35.031Z","1.5.0":"2026-09-27T14:27:17.617Z","1.5.1":"2026-09-28T17:16:49.930Z","1.5.2":"2026-09-29T17:30:12.551Z","1.5.3":"2026-10-01T15:16:04.406Z","1.5.4":"2026-10-01T17:00:46.654Z","1.5.5":"2026-10-03T01:21:56.597Z","1.6.0":"2026-10-03T20:16:40.082Z"},"bugs":{"url":"https://github.com/NurPech/ioBroker.hannah/issues"},"author":{"name":"M1kad0","email":"leonie+iobroker@sgessinger.de"},"license":"MIT","homepage":"https://github.com/NurPech/ioBroker.hannah","keywords":["hannah","gRPC","voice assistant","ioBroker"],"repository":{"url":"git+https://github.com/NurPech/ioBroker.hannah.git","type":"git"},"description":"Connects ioBroker to Hannah voice assistant via bidirectional gRPC — streams device states, presence and commands in real time.","contributors":[],"maintainers":[{"name":"bluefox","email":"dogafox@gmail.com"},{"name":"m1kad0","email":"leonie+npm@sgessinger.de"}],"readme":"![Logo](admin/hannah.png)\n# ioBroker.hannah\n\n[![NPM version](https://img.shields.io/npm/v/iobroker.hannah.svg)](https://www.npmjs.com/package/iobroker.hannah)\n[![Downloads](https://img.shields.io/npm/dm/iobroker.hannah.svg)](https://www.npmjs.com/package/iobroker.hannah)\n**Tests:** ![Test and Release](https://github.com/NurPech/ioBroker.hannah/workflows/Test%20and%20Release/badge.svg)\n\n## Hannah adapter for ioBroker\n\nConnects ioBroker to the [Hannah](https://github.com/NurPech/hannah) voice assistant via a bidirectional gRPC stream. Device states, presence information and text commands flow from ioBroker to Hannah in real time; Hannah sends SetState commands back when it controls devices.\n\nThis adapter replaces the previous MQTT-based integration and eliminates the message-loop problems that came with retained topics and wildcard subscriptions.\n\n## Features\n\n- **Bidirectional gRPC stream** — persistent connection with automatic reconnect\n- **Device discovery** via ioBroker enums (rooms × functions) with configurable filters\n- **Extra state prefixes** — subscribe to any additional state tree (e.g. car tracker, weather adapter)\n- **Snapshot on connect** — current state values are pushed to Hannah immediately after connecting, replacing MQTT retained messages\n- **Resident presence** — forwards presence state changes from the Residents adapter\n- **Text commands** — write to `hannah.<instance>.textCommand` to send text queries to Hannah\n- **SetState** — Hannah can set ioBroker states directly via the same gRPC channel\n- **Notifications** — forward messages to Hannah via `sendTo` or the native ioBroker Notification Manager; LLM reformulation for system messages, direct TTS for `sendDirect`\n- **Announcements** — play TTS in specific satellite rooms and/or for a specific Person via `sendTo` with a room list and/or roomie ID, without LLM or Telegram\n- **Blockly support** — custom blocks for direct messages and room/Person announcements\n\n## Requirements\n\n- ioBroker js-controller ≥ 5.0\n- Node.js ≥ 22\n- A running [Hannah Core](https://github.com/NurPech/hannah) instance with gRPC enabled (default port 50051)\n\n## Installation\n\nInstall via the ioBroker admin interface\n\n## Configuration\n\n### Connection tab\n\n| Field | Description | Default |\n|-------|-------------|---------|\n| Hannah Host | IP address or hostname of the Hannah Core server | `127.0.0.1` |\n| gRPC Port | Port Hannah Core listens on | `50051` |\n\n### Device Discovery tab\n\nSelect which **rooms** and **functions** Hannah should be aware of. Leaving both lists empty includes everything.\n\nSee the [Smart Home Integration guide](https://hannah-docs.leonie.network/manual/smart-home-integration/) for more on how room/function assignment works and how to structure devices so Hannah can find them.\n\n**Extra State Prefixes** — additional ioBroker state ID prefixes to stream to Hannah, e.g.:\n\n| Use case | Prefix |\n|----------|--------|\n| Car tracker (VW-Connect) | `javascript.0.virtualDevice.Auto` |\n| Weather (openweathermap adapter) | `openweathermap.0.forecast` |\n| User variables | `0_userdata.0` |\n\n### Integrations tab\n\n| Field | Description |\n|-------|-------------|\n| Residents Adapter Instance | Instance number of the Residents adapter for presence tracking |\n\n## Adapter states\n\n| State | Type | Description |\n|-------|------|-------------|\n| `hannah.<instance>.info.connection` | boolean | `true` while connected to Hannah Core |\n| `hannah.<instance>.textCommand` | string | Write a text query here (ack=false) to send it to Hannah |\n\n## Hannah Core configuration\n\nThe adapter expects `HannahService.AgentConnect` to be available on the configured host/port. No additional Hannah-side configuration is required — the adapter identifies itself automatically on connect.\n\n## Changelog\n<!--\n    Placeholder for the next version (at the beginning of the line):\n    ### **WORK IN PROGRESS**\n-->\n### 1.6.0 (2026-10-03)\n- Added (with a `hannah.v2` Core): devices are now also recognized with the ioBroker type detector (`@iobroker/type-detector`, pinned to 6.0.1). It tells a dimmer from a plain light, a socket from a switch, and which state of a thermostat, blind, air conditioner, air quality sensor or contact plays which part (setpoint, actual temperature, humidity, power, consumption, mode, fan speed, position, ...). A `canonicalKey` or `type` set in `common.custom` still wins, and a state the detector has no part for is handled as before\n- Changed (with a `hannah.v2` Core): a device none of whose states is recognized (a config channel such as a Shelly's cloud or WiFi settings, or a block of status values) is no longer reported to Hannah. The states a recognized device has beyond what Hannah knows are still reported as generic slots\n- Fixed (with a `hannah.v2` Core): a writable boolean with the plain role `state` is only taken for a switch if its name says so (`state`, `on`, `power`, ...). Before, settings such as an LED indication or a debug mode made a motion sensor a socket. A value named `raw` no longer ties with the value itself, so the illuminance of a Zigbee motion sensor is found\n- Fixed: a device or channel assigned to a function (the usual way for Bosch, Shelly, Zigbee2MQTT or HomeMatic devices) is now subscribed with all the states below it. Before, only a state itself was subscribed, so nothing below a device or channel in a function ever reached Hannah\n- Changed (with a `hannah.v2` Core): a state directly at the top level of an instance (for example `alias.0.Lamp`) is now a device of its own, named after itself, instead of being thrown together with every other state of that instance. A function assigned to a device or channel now counts for the states below it, like a room does. Channels of one device (same room, same function) that use different slots, such as a switch channel and a power channel, now become one device, while the relays of a multi-relay plug stay devices of their own\n- Added (with a `hannah.v2` Core): an alias state without a role, type, unit or range takes them from the state it points to, so it is recognized like that state. If the alias converts the value with a read or write function, unit and range are not taken over\n- Added (with a `hannah.v2` Core): values are now reported on the scale Hannah expects, from the unit and range of the state: brightness and cover position as 0-100 % (also from 0-255 or 0-1), colour temperature in Kelvin (also from mired), temperature in °C (also from °F or K), power in W (also from kW or mW) and energy in kWh (also from Wh or MWh). A colour is also understood as `rrggbb`, `0xrrggbb`, `#rgb` and `rgb(r, g, b)`, and is written back in the notation the state already has\n- Changed (with a `hannah.v2` Core): if several states of a device fit one slot, the adapter now narrows them down by exact role, then unit, then writability and only then by name. A temperature in °C wins over a °F duplicate, a state in mA is no power, and a consumption role is energy rather than power. If there is still no clear winner, none is picked and the states stay generic slots\n\n### 1.5.5 (2026-10-03)\n- Fixed: the adapter's notification texts (name, description and the \"trust levels not supported\" category) are now translated into all supported languages\n- Changed: updated the test dependency `@iobroker/testing` to 6.3.0\n- Changed: adapter names itself and its version in every call to Hannah Core, so Core can tell which version is connected and name it in its notice about outdated components. Requires `hannah-grpc-lib` 0.8 (below 0.09.0)\n- Changed: Telegram tells Hannah Core every 30 seconds that it is running, so Core still knows it when it holds no open connection. Needs a Core that knows the call, an older Core is left alone after one log line. Requires `hannah-grpc-lib` 0.09.0 (below 0.10.0)\n\n### 1.5.4 (2026-10-01)\n- Added (with a `hannah.v2` Core): when Hannah starts watching a state for a trigger, the adapter now also reports the state's current value, so conditions like \"only if\" or \"unless\" know their state right after a Hannah restart instead of after the next change. Hannah does not run any trigger because of this start value\n- Added (with a `hannah.v2` Core): every slot of a device now names the ioBroker state behind it, so Hannah's trigger editor can offer the device's slots directly\n- Changed: updated to hannah-proto 5.2.0\n\n### 1.5.3 (2026-10-01)\n- Added: the adapter now speaks the new `hannah.v2` API to Hannah Core and reports your devices as typed devices (light, socket, thermostat, air conditioner, blind, sensor, door/window contact, …) with their capabilities instead of single states. Hannah then knows what a device can do and answers honestly when it can't do something. Older Hannah Cores (`hannah.v1` only) keep working with the previous behavior\n- Fixed (with a `hannah.v2` Core): a light's colour and colour temperature no longer end up on the same value, and each is recognised by its role (`level.color.rgb`, `level.color.temperature`)\n- Changed: updated to hannah-proto 5.1.0 and hannah-grpc-lib 0.7.0. The fallback to the unversioned Hannah API, which predates `hannah.v1`, is gone: the adapter no longer connects to a Hannah Core that old\n\n### 1.5.2 (2026-09-29)\n- Fixed: live value updates for states with an unusual name no longer freeze at their first value — the adapter now tells Hannah Core which role a state has instead of leaving Core to guess it from the state name (needs hannah-proto 4.8 on the Core side; older Cores behave as before)\n- Changed: updated to hannah-proto 4.8.0\n\n### 1.5.1 (2026-09-28)\n- Fixed: writing to `satellites.rooms.all.announcement`/`.announcementSsml`/`.announcementRephrase`/`.dnd`/`.mute` (the virtual \"all\" room) logged a debug line but never actually reached Hannah\n\n### 1.5.0 (2026-09-27)\n- Added: minimum trust level per state (`neededTrust`, 0–10, in the state's \"Custom settings\" dialog) — only users with at least this trust level may switch the state via Hannah; reading it is never restricted. Leave empty for no restriction. Changes take effect without restarting the adapter\n- Added: ioBroker notification when a minimum trust level is set but the connected Hannah Core doesn't support it yet — those states aren't protected until Hannah Core is updated. The notification is cleared automatically once an updated Hannah Core confirms support\n- Changed: updated to hannah-proto 4.7.0\n\n### 1.4.2 (2026-09-27)\n- Fixed: the labels \"Location\" and \"not supported / deprecated\" in the adapter settings are now translated into all languages instead of showing in English\n\n### 1.4.1 (2026-09-27)\n- Changed: logs go to the Hannah log collector's versioned API `hannah.v1`. A log collector too old for it still gets them over the previous API\n\n### 1.4.0 (2026-09-27)\n- Changed: the adapter uses Hannah Core's new versioned API (`hannah.v1`, Hannah Core with hannah-proto 4.6.0 or newer). With an older Hannah Core it automatically falls back to the previous API and logs a warning once per connection that Hannah Core should be updated, so the adapter can be updated before Hannah Core\n- Changed: log shipping to the Hannah log collector now uses the same fallback and keeps working with older and newer Hannah Core versions\n\n### 1.3.1 (2026-09-26)\n- Changed: when ioBroker runs in Docker, the adapter's logs in the Hannah log collector no longer show up under a new name after every container recreate. They appear as `container`, or under the name set in the `HANNAH_LOG_INSTANCE` environment variable\n\n### 1.3.0 (2026-09-26)\n- Fixed: with \"daswetter\" selected as weather source, Hannah never received any weather data — its object tree differs completely from openweathermap's, and the discovery only understood the latter. daswetter now has its own dedicated handling: forecast days and current conditions (taken from the hourly forecast slot that is running right now) are read by state name, wind speed is converted from km/h, and days are matched by their own date, so a delayed download doesn't shift \"today\" and \"tomorrow\"\n- Added: \"Location\" selection in the Weather tab for daswetter, listing the locations configured in the selected daswetter instance. Defaults to the first location, so existing setups work without any change\n- Changed: \"accuweather\" as weather source is marked as not supported / deprecated — AccuWeather no longer offers a free API, so its data can't be supported reliably. Existing settings keep loading, but no weather data is forwarded and a warning is logged at startup; please switch to another weather source\n\n### 1.2.0 (2026-09-24)\n- Added: the adapter sends its logs to the Hannah log collector as well, as soon as Hannah reports one, so they are included when you download the logs of all Hannah components. The ioBroker log stays exactly as it is, and without a log collector nothing changes. Passwords and tokens from the adapter settings are masked before a line is sent\n\n### 1.1.6 (2026-09-21)\n- Fixed: a device whose room was assigned directly to its state instead of the parent channel/device was never discovered — Hannah never learned about it at all\n\n### 1.1.5 (2026-09-18)\n- Changed: when Hannah pushes a presence update, the adapter can now set the individual \"away\"/\"home\"/\"asleep\" flag instead of always overwriting the combined presence state — avoids Hannah accidentally clobbering an unrelated flag (e.g. clearing \"asleep\" while only meaning to update \"away\"). No visible change until Hannah Core starts sending the new, more precise update.\n- Changed: satellite online/offline log messages downgraded from \"info\" to \"debug\" — too noisy for the default log level\n\n### 1.1.4 (2026-09-13)\n- Fixed: the residents snapshot sent on every reconnect reported a resident as \"away\" whenever their presence state couldn't be read as a number, instead of leaving it unset — collapsing \"genuinely away\" and \"no value read\" into the same signal\n- Changed: updated to hannah-proto 4.0.0 — no functional change for this adapter, just keeping the protocol-version check in lockstep with Hannah Core\n\n### 1.1.3 (2026-09-09)\n- Added: new \"Inverted Rolladen/Markise\" custom setting for Rolladen/Markise (blind) devices — enable it for actors whose raw percentage means 0%=open/100%=closed instead of Hannah's default (e.g. some Homematic/KNX actors), so voice commands and status announcements stay correct\n\n### 1.1.2 (2026-09-08)\n- Fixed: a satellite disconnected at adapter startup could end up with a duplicate, permanently \"offline\" entry on the Hannah Satellites page (and in the object tree) once it reconnected, for rooms whose display name differs in formatting from its technical room ID (e.g. umlauts, or \"Hobbyraum\" vs. \"hobbyroom\")\n\n### 1.1.1 (2026-09-06)\n- Added: the `enabled`/`type`/`canonicalKey` override for Hannah (previously only settable by hand-editing the object in Expert Mode) now shows up in the regular \"Custom settings\" dialog of any state, with a proper form and autocomplete suggestions for known device categories/state keys\n- Added: `common.custom` override for a device's voice-matching name (`name`, alongside the existing `type`/`canonicalKey` overrides and its own field in the \"Custom settings\" dialog) — lets you fix the name Hannah uses for voice commands and announcements without renaming the actual ioBroker object\n\n### 1.1.0 (2026-09-05)\n- Changed: updated to hannah-proto 3.8.0 — the adapter now tells Hannah directly which device a state belongs to and what role it plays (on/off, dimmer level, color, ...), instead of Hannah having to guess both from the ioBroker object ID. Devices with unusual or missing role information can still be corrected via a `common.custom` override on the state, same as the existing device-type override.\n\n### 1.0.2 (2026-08-09)\n- Changed: updated to hannah-proto 3.2.0 — the gRPC connection now also sends a per-message compatibility marker alongside the existing protocol-version check, so future breaking changes elsewhere in the protocol won't unnecessarily disconnect this adapter\n- Fixed: satellite-related types (`Satellite`, `GetSatellitesResponse`, `SetSatelliteDisplayNameRequest`) moved to their own module in a prior hannah-proto release — this adapter hadn't picked that up yet, which would have broken the build against any hannah-proto newer than 2.x\n\n### 1.0.1 (2026-08-06)\n- Fixed: the per-satellite do-not-disturb state stayed unconfirmed (`ack:false`) forever after a write — no way to tell whether it actually took effect. Now confirmed with `ack:true`, matching mute/volume\n\n### 1.0.0 (2026-08-06)\n- Changed: announcement, do-not-disturb, \"Hannah is speaking\" and \"last transcript\" now live on each satellite individually (`satellites.rooms.<room>.<device>.*`), not just shared per room — matches how mute/volume already worked. Room-level announcement/dnd/mute stay available as a convenience to control every satellite in a room at once. \"Hannah is speaking\"/\"last transcript\" per satellite are not wired up to live data yet (planned separately)\n\n### 0.34.2 (2026-08-05)\n- Fixed: forecast weather for tomorrow/the week was still empty after 0.34.1 — openweathermap only creates an object for day0's forecast, day1+ are bare states with no parent object at all, so the channel-based discovery never found them. Discovery now scans states directly instead of walking channel objects, so it no longer depends on one existing\n\n### 0.34.1 (2026-08-05)\n- Fixed: forecast weather (\"Wie wird das Wetter morgen?\" and week overviews) always came back empty on openweathermap, even the \"today\" max temperature — forecast-day states carry a `.forecast.N` suffix on their role that wasn't recognized, so none of them ever matched. Current conditions were unaffected\n\n### 0.34.0 (2026-08-05)\n- New: generic weather-source discovery — a new \"Weather\" settings tab lets you pick a known ioBroker weather adapter (openweathermap, accuweather, daswetter) or map your own state IDs manually (\"Custom\"), and forwards current conditions + a multi-day forecast to Hannah. Replaces Hannah's previous hardcoded openweathermap-only MQTT parsing with a generic, vendor-independent path\n\n### 0.33.4 (2026-08-04)\n- Fixed: a resident's display name could get wiped back to empty shortly after every adapter restart, for any resident whose presence changes live (most noticeably real, actively-tracked people). Presence-only updates no longer send an empty name — they omit it entirely, so Hannah keeps the name it already knows instead of overwriting it with a blank\n\n### 0.33.3 (2026-08-03)\n- Changed: admin UI migrated from the deprecated `@iobroker/adapter-react-v5` to `@iobroker/gui-components`\n\n### 0.33.2 (2026-08-01)\n- Changed: satellite cards in the Device Manager now show the satellite's display name as the title and its MAC as the identifier (\"MAC:\") instead of the room; the room is now shown as its own field on the card\n\n### 0.33.1 (2026-08-01)\n- Added: satellites in the Device Manager now show an update indicator (firmware version + available-update badge) and two card actions — \"Update firmware\" and \"Restart satellite\" (with confirmation) — instead of only being reachable through the states tree\n- Added: satellite detail panel now also shows last seen, firmware version and update-available status\n\n### 0.33.0 (2026-08-01)\n- Added: \"Restart satellite\" button per satellite (`satellites.rooms.<room>.<device>.restart`), triggers an ordered remote restart over MQTT — no more walking over to the device or pulling power\n- Fixed: satellite `last_seen` no longer freezes after a device (re-)registers — it now keeps advancing in step with Hannah's live heartbeat instead of only reflecting the last connect/reconnect\n\n### 0.32.6 (2026-07-26)\n- Fixed: a failed/unreachable `GetSatellites` call was treated the same as Core reporting zero satellites, deleting every satellite object as \"stale\" whenever Core was merely unreachable at that moment\n\n### 0.32.5 (2026-07-15)\n- Fixed: `iaq`/`iaq_accuracy`/`co2_equiv`/`voc_equiv` sensor states no longer log \"has no existing object\" warnings if a satellite's first sensor update arrives before BSEC2 has produced a valid IAQ reading\n\n### 0.32.4 (2026-07-13)\n- Fixed: `last_seen` satellite state now uses role `date` instead of `value.time` (which requires a numeric epoch timestamp, not the ISO string this adapter stores)\n- Fixed: satellite/room online indicators now use role `indicator.reachable` instead of `indicator.connected` (reserved for instances)\n- Fixed: firmware version state now uses role `info.firmware` instead of the generic `text`\n- Fixed: the virtual \"all\" satellite room folder no longer has a German name\n- Fixed: BLE tag states no longer have German object names, and tag labels are now sanitized before being used in object IDs\n- Fixed: sensor `pressure` state now uses unit `mbar` instead of `hPa` per the role definition, and satellite device IDs are now sanitized before being used in sensor object IDs\n- Fixed: `textCommand`/`textAnswer` states now use role `text` instead of the generic `state`, and a typo in `textCommand`'s display name was corrected\n- Fixed: a pending `ask` (`sendTo` with a `resident_answered` callback) is no longer left dangling forever if Hannah Core disconnects before an answer arrives\n- Fixed: HTTP requests to a satellite's NVS endpoint and to the firmware update server now time out instead of hanging indefinitely if the target is unreachable\n- Changed: satellite default credentials (WiFi/MQTT passwords, OTA/asset/NVS tokens) are now encrypted and protected in the adapter configuration, matching the existing firmware source token\n- Fixed: removed a stale, untranslated `Write NVS` key from the non-English admin UI translations\n\n### 0.32.3 (2026-07-12)\n- Added: device snapshot now reports whether each state is writable (`AgentDevice.writable`, from ioBroker's `common.write`) — lets Hannah/the WebUI exclude read-only states (sensors, etc.) from control actions\n- Changed: `@m1kad0/hannah-proto` bumped to 0.5.2\n\n### 0.32.2 (2026-07-12)\n- Added: `state-watcher.ts`'s device-type detection now recognizes a \"Szene\"/\"scene\" function, resolving to type `scene` — lets room-scoped scene states be enum-discovered like any other device without being pulled into \"Licht\"-category group commands\n\n### 0.32.1 (2026-07-11)\n- Changed: `@m1kad0/hannah-proto` bumped to 0.5.0. No functional change for this adapter (it never called the removed `Routine*` RPCs).\n\n### 0.32.0 (2026-07-11)\n- Added: `state-watcher.ts` now classifies each state's value type (Boolean/Numeric/Enum/Color/Text) from ioBroker's own `common.type`/`role`/`states` and sends it to Hannah Core alongside the existing snapshot data — lets Hannah build a proper trigger-editor dropdown instead of requiring a free-text state ID\n\n### 0.31.3 (2026-07-09)\n- Added: `NvsDialog` (\"Rewrite NVS\") now offers a Serial/Wireless toggle — Wireless pushes WiFi, MQTT broker/port, OTA channel and the OTA/asset tokens straight to an already-connected satellite via its `POST /nvs` endpoint, no cable needed. Wireless is only enabled for satellites that are currently online; anything outside that field set (WiFi user/pass for MQTT, OTA/asset URLs, TLS skip) still requires Serial\n- Fixed: `FlashDialog`/`NvsDialog` now also write the satellite's wireless-update bearer token (`satNvsToken` from the Satellite Defaults) into NVS during flash/rewrite — previously it was never set on a fresh flash and got silently wiped on every Serial rewrite, leaving the wireless write path permanently disabled\n- Added: `NvsDialog`'s \"Display Name\" field now actually renames an already-paired satellite (via the new `setSatelliteDisplayName` sendTo command) — previously it was silently discarded, since it was only ever sent through the pre-pairing `provisionSatellite` call, which has no effect on an already-paired device. Requires the new \"Your Hannah User ID\" setting (Satellite Defaults tab) to be configured; without it, renaming is skipped rather than failing the whole write\n\n### 0.31.2 (2026-07-09)\n- Fixed: `FlashDialog`/`NvsDialog` no longer leave a permanent, unclaimed pending satellite registered with Hannah Core when a WebSerial flash fails or is never attempted (unsupported browser, missing driver, non-HTTPS page, cancelled port picker) — the satellite is now registered only once a live connection to the ESP is confirmed, right before the actual flash write\n- Changed: `NvsDialog` (\"Rewrite NVS\") no longer regenerates the satellite's pairing seed or re-registers it with Hannah Core on every rewrite — editing an already-known satellite's settings no longer forces an unwanted re-pairing\n\n### 0.31.1 (2026-07-08)\n- Fixed: a satellite could end up with two separate room object trees (e.g. `Leonie_Schlafzimmer` and `leonie_schlafzimmer`) if its room string changed case or formatting between updates — room paths are now built from a case-insensitive canonical key, and an offline update reporting a differently-formatted room than the satellite was last online with now also cleans up the old path instead of only the online case\n\n### 0.31.0 (2026-07-08)\n- Fixed: a satellite's object tree is now cleaned up from its old room immediately when a room reassignment arrives, instead of leaving a stale path behind until the satellite happened to reconnect\n\n### 0.30.3 (2026-07-05)\n- Changed: replaced the manually-synced `hannah.proto` files and `@grpc/proto-loader` with the published `@m1kad0/hannah-proto` npm package (typed `@grpc/grpc-js` client, no local codegen). No functional change.\n\n### 0.30.2 (2026-07-04)\n- Added: the adapter now sends a protocol-version header with every request to Hannah Core, so version mismatches between the two are caught with a clear error instead of unexplained misbehavior\n\n### 0.30.1 (2026-07-03)\n- Changed: `hannah.proto` split by scope into several files on the Hannah side; the adapter's proto loader now resolves `import` statements between them (`includeDirs`). No functional change.\n- Fixed: `npm run build` only copied `hannah.proto` into `build/proto/`, not the other scope files added above — adapter crashed on startup (`ENOENT: .../build/proto/shared.proto`) once installed from a packaged build\n\n### 0.30.0 (2026-07-02)\n- Added: illuminance/lux sensors are now recognized as their own device category (`illuminance_sensor`) — via the `value.brightness` role, or a read-only state under a \"Helligkeit\"/\"Lux\" function\n\n### 0.29.2 (2026-06-30)\n- Fixed: stale satellite/room object trees that Hannah Core no longer reports are now actually removed instead of just marked offline — `markUnknownOffline()` renamed `removeUnknownSatellites()`. Hannah's satellite tracking is stateful now (reports every known satellite regardless of connection status, pushes `satellite_deleted` on real deletion), so \"not reported at all\" reliably means genuinely gone (#83)\n\n### 0.29.1 (2026-06-30)\n- Added: Blockly \"Hannah announce\" block now has a \"Person (optional)\" input, generating the new `person` field\n\n### 0.29.0 (2026-06-30)\n- Added: `owner` state under `satellites.rooms.<room>.<device>.*` — shows the Person a satellite is assigned to in Hannah Core, if any (populated from the extended `GetSatellites` response, refreshed on (re)connect like `last_seen`/`room_mismatch`)\n- Added: `sendTo('announce', ...)` accepts a new optional `person` field (roomie ID, e.g. `\"leonie\"`) to target a specific Person directly, in addition to or independent of `room`/`rooms` — routes through Hannah Core's `Announce` RPC instead of the room-only `satellite_control` stream path used otherwise\n\n### 0.28.0 (2026-06-29)\n- Added: virtual `satellites.rooms.all` room (\"Alle\") — always present, not tied to any satellite. Exposes `announcement`/`announcementSsml`/`announcementRephrase`, `dnd` and `mute` states that broadcast to every connected satellite (Hannah Core already resolves `room == \"all\"` as a broadcast target).\n\n### 0.27.1 (2026-06-27)\n- Changed: `GrpcClient.getSatellites()` now returns every satellite Hannah Core knows about (not just currently-connected ones), with new `room_id`/`room_display_name`/`last_seen`/`connected`/`room_mismatch` fields. `onConnected`'s initial sync now uses `connected` instead of assuming every returned satellite is online, and falls back to the DB-assigned room when a satellite isn't currently connected (its live room is empty then) — lets provisioned-but-never-connected satellites show up correctly instead of being skipped\n- Added: `last_seen` and `room_mismatch` states under `satellites.rooms.<room>.<device>.*`, populated from the extended `GetSatellites` response\n- Fixed: `updateSatelliteNvs` now rejects with a clear \"not connected\" error instead of pushing to an empty IP when the target satellite is known but currently offline\n\n### 0.27.0 (2026-06-26)\n- Added: `updateSatelliteNvs` `sendTo` command — pushes a key-value map to a satellite's new `POST /nvs` HTTP endpoint to remotely update WiFi/MQTT/OTA-channel/seed/wakeword-threshold settings without physical access. Resolves the satellite's IP via `GrpcClient.getSatellites()`, authenticates with the new `satNvsToken` admin config field (Satellite Defaults tab)\n\n### 0.26.1 (2026-06-25)\n- Added: `ResidentsWatcher.handleSetResidentMood()` — writes an incoming `AgentSetResidentMood` command to `residents.<instance>.<segment>.<id>.mood.state`, same path pattern as the existing presence write; dispatched in `main.ts` alongside the existing `set_resident` case\n\n### 0.26.0 (2026-06-21)\n- Added: `ResidentsWatcher` now also tracks pets (`residents.<instance>.pet.*`), not just roomies/guests — presence updates and the resident snapshot carry a `type` field (`ROOMIE`/`GUEST`/`PET`) instead of the removed `is_guest` boolean\n- Fixed: the resident snapshot sent to Hannah Core always reported `presence_state: 0` regardless of the actual state; it now reads the real value from `<resident>.presence.state`\n- Added: resident snapshot now includes `mood_level`, read from `<resident>.mood.state` if present\n\n### 0.25.0 (2026-06-20)\n- Added: `resolveType()` now maps role `value.humidity` to the new `humidity_sensor` device type (Refs https://dev.kernstock.net/gessinger/voice/hannah/-/work_items/47)\n- Changed: satellite deletion now happens via the new `satellite_deleted` `AgentCommand` sent by Hannah Core (`SatelliteWatcher.deleteSatellite()` + `SensorWatcher.deleteSensors()` are unchanged, only the trigger moved); the AdminUI \"Remove\" button and the `deleteSatellite` `sendTo` handler are removed — deletion is now done from Hannah's own Web UI satellite list, the only place that also clears RoomManager's DB entry (Refs https://dev.kernstock.net/gessinger/voice/hannah/-/work_items/42)\n\n### 0.24.1 (2026-06-20)\n- Fixed: `StateWatcher.onStateChange()` dropped every state change with `ack:false`, including states subscribed via `AgentWatchMore` (trigger_engine) — manually/directly written flags (e.g. `0_userdata` booleans with no backing device to confirm them) never received an explicit `ack:true` and were silently never forwarded to Hannah Core. WatchMore states are monitoring-only (never written to via `handleSetState`), so there's no feedback-loop risk in forwarding them regardless of `ack` — the filter now only applies to enum-discovered device states\n\n### 0.24.0 (2026-06-19)\n- Fixed: `StateWatcher.resolveType()` read a non-standard `common.hannah.type` field for the device-type override, which is never reliably persisted by ioBroker — now reads the officially documented `common.custom[\"<adapter-namespace>\"]` structure (`{enabled: true, type: \"...\"}`), matching the convention from the ioBroker objects schema docs\n\n### 0.23.0 (2026-06-19)\n- Added: `FlashDialog` — \"Download image\" button combines firmware partitions + generated NVS into a single flat binary and triggers a browser download, as an alternative to WebSerial flashing (works in any browser, e.g. Safari) (Refs #61)\n- Fixed: `FlashDialog.prepareFirmwareAndNvs()` now checks `result.ok`/`result.error` from the `provisionSatellite` sendTo call instead of always logging \"Satellite registered.\" — provisioning failures (e.g. unknown room) are now surfaced instead of silently swallowed (Refs #66)\n- Added: `StateWatcher` sends the full `enum.rooms.*` catalog to Hannah Core (`send_rooms`, independent of devices) on connect and on enum change, so Hannah's `RoomManager` knows about rooms before any device/satellite exists in them (Refs #66)\n\n### 0.22.0 (2026-06-19)\n- Fixed: `SatelliteWatcher.handleSatelliteUpdate` now skips satellites with empty room and `online=true` to prevent invalid ioBroker state IDs ending in `.` (Refs #37)\n\n### 0.21.1 (2026-06-19)\n- Fixed: `FlashDialog` room dropdown was empty — used `getForeignObjects('enum.rooms.*')` (not valid for `enum` object type) instead of `getEnums('rooms')`, the method already used correctly in `app.tsx`\n\n### 0.21.0 (2026-06-18)\n- Changed: `NvsDialog` — removed `room` field; re-flashing NVS no longer requires room selection; `provisionSatellite` call no longer passes `roomId` (Refs #35)\n- Changed: `FlashDialog` — room free-text field replaced with dropdown populated from `enum.rooms.*`; `provisionSatellite` now called before flash with `seed` + `roomId`; `seed` written to NVS partition (Refs #35)\n- Changed: `provisionSatellite` sendTo handler — `roomId` is now optional; enables seed-only re-provisioning without changing the satellite's room assignment (Refs #35)\n\n### 0.20.0 (2026-06-18)\n- Changed: `StateWatcher` sends enum ID segment as `room` (e.g. `wohnzimmer`) and all `common.name` languages as `room_names` map — language-neutral object keys (Refs #58)\n- Changed: satellite state paths use room ID from `AgentSatelliteUpdate.room` → `satellites.rooms.wohnzimmer` instead of `satellites.rooms.Wohnzimmer` (Refs #58)\n\n### 0.19.1 (2026-06-18)\n- Fixed: Added missing 'ble' folder to resolve E3009.\n\n### 0.19.0 (2026-06-18)\n- Changed: `handleSatelliteUpdate` accepts optional `displayName` parameter; uses it (falling back to `deviceId`) for `common.name` in ioBroker (Refs #52)\n- Changed: `_ensureSatelliteStates` calls `extendObject` after `setObjectNotExistsAsync` so renames are applied to already-existing objects (Refs #52)\n- Updated: proto — `AgentSatelliteUpdate.display_name` (field 8), `Satellite.display_name` (field 5) — Core now sends the provisioned human-readable name to the adapter (Refs #52)\n- Changed: `device_id` is now always the eFuse MAC — `serial` field removed from adapter API; `handleSatelliteUpdate`, `getSatellites` return type, and `markUnknownOffline` no longer reference serial (Refs #54)\n- Updated: proto — `serial` fields removed from `Satellite`, `SatelliteRegistration`, `AgentSatelliteUpdate`; field numbers 4/7 reserved (Refs #54)\n- Changed: NvsDialog — removed `device_id` NVS write (eFuse MAC is now computed on device); renamed \"Device ID\" field to \"Display Name\"; Display Name is sent to Hannah Core via `provisionSatellite` only (Refs #54)\n\n### 0.18.0 (2026-06-18)\n- Added: Satellite Identity (Refs #52) — paired satellites now use their eFuse-MAC-based hardware serial as stable ioBroker object key (`satellites.rooms.<room>.<serial>.*`) instead of the mutable device_id; unpaired/UDP satellites fall back to device_id as before\n- Added: `provisionSatellite` sendTo command — generates a pairing seed in Hannah Core before flashing so the satellite can auto-pair on first connect\n- Added: NVS flash dialog now registers the satellite in Hannah Core (via `provisionSatellite`) and writes the pairing seed to NVS so the satellite links its hardware serial to the pre-configured identity on first boot\n- Updated: proto — `Satellite.serial` (field 4), `SatelliteRegistration.serial/seed` (fields 4+5), `AgentSatelliteUpdate.serial` (field 7), `ProvisionSatellite` RPC + `ProvisionSatelliteRequest` message\n\n### 0.17.0 (2026-06-16)\n- Added: IAQ, IAQ accuracy, CO₂ equivalent and VOC equivalent states under `satellites.sensors.<device>` — populated when satellite uses BME680 with BSEC2 (Refs #17)\n\n### 0.16.0 (2026-06-16)\n- Added: `ask` command for `sendTo` — pose a question to a resident via Hannah TTS; the resident's spoken answer is returned as `{ answer: string }` in the `sendTo` callback; payload: `{ room?: string, text: string }`\n- Updated: proto — `AgentAskResident` gains `correlation_id`; new `AgentResidentAnswered` message and `resident_answered` variant in `AgentCommand` oneof\n\n### 0.15.3 (2026-06-13)\n- Added: \"Disable TLS certificate validation\" checkbox in flash and NVS-rewrite dialogs — stored as NVS key `tls_skip`; default off; useful for satellites connecting to servers with self-signed certificates\n- Added: same option in the satellite defaults tab of the adapter settings\n\n### 0.15.2 (2026-06-12)\n- Fixed: firmware download failed with \"Invalid character in header content [Authorization]\" when the configured firmware source token contained a trailing newline or whitespace — the token is now trimmed before being used as a Bearer header\n- Fixed: deleting a satellite left orphaned objects behind — the sensor tree (`satellites.sensors.<device>`, a separate object branch) and the room container (`satellites.rooms.<room>`, including its shared room-level states) were never removed; deletion now runs in the backend via a `deleteSatellite` command that removes the satellite tree, the sensor tree, and the room container when it becomes empty (no `device` children left)\n- Fixed: the WebSerial port in the flash dialog was not released when the overlay was closed (only the monitor reader was cancelled, never `port.close()`) — the serial connection stayed locked until the whole page was left; closing the dialog, pressing \"Stop monitor\", or unmounting now fully releases the reader, esptool transport and port\n- Changed: the delete button in the satellites tab is hidden for online satellites — an online satellite would immediately re-register itself via its own updates, so only offline ones can be removed\n\n### 0.15.1 (2026-06-11)\n- Fixed: `wakeword` NVS key removed from flash and NVS-rewrite dialogs — wake-word on/off is compile-time only; `ww_threshold` remains\n- Fixed: adapter checker E0058 — removed unsupported `allowScripts` field from `package.json`\n- Fixed: adapter checker E1084/E1105 — removed deprecated `fa-icon` and `icon` from `adminTab`, converted `adminTab.name` to i18n object, fixed `adminUI.tab` value to `\"html\"`\n- Fixed: adapter checker E5043 — changed `'http'` and `'https'` imports to `'node:http'` / `'node:https'` in `firmware-manager.ts`\n- Fixed: adapter checker W1073/W1074 — added `firmwareSourceToken` to `protectedNative` and `encryptedNative` in `io-package.json`\n\n### 0.15.0 (2026-06-11)\n- Added: web flasher — flash new satellites directly from the admin UI via WebSerial with full device provisioning (WiFi, MQTT, OTA, asset server) written as NVS partition in one step\n- Added: serial monitor mode in flash dialog — streams the full boot log immediately after flashing\n- Fixed: NVS CRC was calculated incorrectly by `esp-nvs-utils`; switched to `@m1kad0/esp-nvs-utils` — ESP-IDF 6.0 no longer erases the NVS partition on first boot\n\n### 0.14.0 (2026-06-09)\n- Added: satellite `address` state (`info.ip` role) — populated from `AgentSatelliteUpdate.address` on registration; IP extracted from `ip:port` UDP address\n- Added: admin tab \"Hannah Satellites\" — card view per satellite showing name, room, online status, firmware version badge, and link to satellite HTTP config page (`http://<ip>/`)\n- Added: `SatelliteWatcher.markUnknownOffline()` — on connect, sets `online: false` for satellite device objects not reported by Hannah Core, preventing stale online states after rename/reassignment\n- Added: delete button per satellite card in admin tab — removes full ioBroker object tree on confirmation\n\n### 0.13.0 (2026-06-05)\n- Fixed: `info` channel object was missing — adapter checker E3009; created before `info.connection` state in `onReady`\n- Fixed: satellite room objects were `channel` type — adapter checker E2003 (device after channel); changed to `folder` so satellite devices remain valid under them\n- Fixed: `indicator.update` role on `update_available` state is unknown — changed to `indicator`\n- Fixed: room and device names containing spaces (e.g. \"Leonie Schlafzimmer\") produced invalid state IDs — `sanitizeId()` now replaces non-`[a-zA-Z0-9_,-]` characters with `_` in ID paths; `common.name` retains the original name; `satellite_control` gRPC messages use the original room name via reverse map\n\n### 0.12.1 (2026-06-04)\n- Fixed: `announcementSsml` and `announcementRephrase` states were silently ignored by Hannah Core — proto-loader uses `keepCase: true` so field names must be snake_case on the wire; added explicit `protoKey` mapping in `satellites.ts`\n\n### 0.12.0 (2026-06-04)\n- Added: `announcementRephrase` state per room — writes text to Hannah Core as `AgentSatelliteControl.announcement_rephrase`; Hannah LLM reformulates before TTS\n\n### 0.11.3 (2026-06-02)\n- Changed: update dependencies (`@grpc/grpc-js` to 1.14.4, `@grpc/proto-loader` to 0.8.1, `@iobroker/types` to 7.1.2)\n- Changed: update dev dependencies (`@tsconfig/node20` → `@tsconfig/node22`)\n- Fixed: replace `process.exit(1)` with `throw new Error()` in verify-package-contents script\n\n### 0.11.2 (2026-06-01)\n- Changed: minimum Node.js version bumped to 22\n- Changed: CI pipeline updated to Node 22 (lint/check) and Node 24 (deploy)\n- Changed: `@alcalzone/release-script` and plugins updated to 5.2.0\n- Changed: use `this.setTimeout`/`this.clearTimeout` in adapter class\n- Changed: removed outdated i18n keys from all translation files\n- Fixed: added link to `CHANGELOG_OLD.md` at end of changelog section\n\n### 0.11.1 (2026-06-01)\n- Fixed: deduplicate notification messages before joining to prevent doubled text when ioBroker registers the same message twice for an adapter instance\n\n### 0.11.0 (2026-05-27)\n- Changed: volume and mute states moved from room-level (`satellites.rooms.<room>.volume/mute`) to per-satellite (`satellites.rooms.<room>.<deviceId>.volume/mute`)\n- Changed: `AgentSatelliteControl` now supports optional `device_id` for per-satellite volume/mute commands; room-level commands (dnd, announcement) unchanged\n- Changed: `AgentSatelliteUpdate` now carries optional `volume` and `mute` fields — adapter updates per-satellite states when received\n\n### 0.10.0 (2026-05-25)\n- New: `climate` device type — detected via funcId keywords (`klima`, `aircon`, `climate`); supports `mode`, `fanSpeed`, `current`, and `expected` states\n\n### 0.9.0 (2026-05-24)\n- New: `SensorWatcher` — handles `AgentSensorUpdate` commands; creates `hannah.<instance>.satellites.sensors.<device>.{temperature,pressure,humidity,gas_resistance}` states on first update\n- Fixed: `satellites.sensors` folder object is created before the per-device channel to avoid state creation failure\n\n### 0.8.0 (2026-05-24)\n- New: `BleWatcher` — handles `AgentBleUpdate` commands from Hannah Core; creates `hannah.<instance>.ble.<label>.room`, `.satellite`, and `.rssi` states on first update and keeps them current on every location change\n\n### 0.7.0 (2026-05-23)\n- New: Per-satellite state `satellites.rooms.<room>.<device>.firmware_version` — updated whenever the satellite reports its running firmware version at boot\n- New: Per-satellite state `satellites.rooms.<room>.<device>.update_available` (`indicator.update`) — set to `true` when the satellite reports a pending OTA update, reset to `false` on the next boot version report\n- New: Per-satellite button `satellites.rooms.<room>.<device>.update_now` — triggers an immediate firmware update (bypasses residents/away check) via `TriggerFirmwareUpdate` gRPC RPC\n- Changed: Build artifacts (`build/`, `admin/build/`) removed from git; `prepack` hook builds automatically on `npm pack`/`npm publish`; Auto-Build GitHub Action removed\n- Changed: `nogit: true` set in `io-package.json` — adapter is distributed via npm only\n\n### 0.6.0 (2026-05-22)\n- New: ioBroker DeviceManager support — satellites are shown as devices with mute toggle and volume slider controls\n- New: Satellite objects are now created as `type: device` (previously `channel`) for DeviceManager compatibility\n\n### 0.5.0 (2026-05-06)\n- New: `AgentDevice` proto carries a `device_type` field (field 5) — resolved from `common.hannah.type` override, ioBroker role (e.g. `level.temperature` → `thermostat`, `sensor.window` → `window`), or function enum IDs; supported types: `light`, `socket`, `thermostat`, `temperature_sensor`, `window`, `door`, `blind`\n\n### 0.4.2 (2026-05-04)\n- Fixed: automated TypeScript build via GitHub Actions\n\n### 0.4.1 (2026-05-04)\n- Fixed: Deployment Issues. Not all required files where inside the package\n\n### 0.4.0 (2026-05-03)\n- Fixed: States may only be set if the state is writable (`common.write === true`).\n- New: `AgentDevice` now includes a `floor` field — resolved from `common.floor` on the device object, with a fallback that scans the state ID path for known floor abbreviations (EG, OG, UG, DG, KG, ZG).\n- New: Configurable floor mappings — define custom label→abbreviation pairs in the Device Discovery tab (e.g. \"Erdgeschoss\" → \"EG\"); mappings normalize both `common.floor` values and ID path segments, and extend (not replace) the built-in abbreviation set.\n\n### 0.3.2 (2026-05-03)\n- Fixed: Device names in Telegram and Hannah were showing the full state ID instead of the readable name\n\n### 0.3.1 (2026-05-02)\n- Fixed: The adapter sends too much data to Hannah\n\n### 0.3.0 (2026-05-02)\n\n- New: Device snapshot on connect — the adapter now sends room, device name, function and current value for every subscribed state immediately after connecting, so Hannah Core no longer needs to query the ioBroker REST API for device discovery\n- New: Resident snapshot on connect — all known residents are forwarded to Hannah Core once after connecting, replacing the previous API-based resident lookup\n- New: `AgentDevice` proto message carries full metadata (room, device, functions, current value) per state; `AgentDeviceSnapshot` wraps the complete list\n- Improved: Enum lookups during snapshot are now fetched once and reused across all states instead of once per state, significantly reducing startup time for large installations\n\n### 0.2.1 (2026-05-01)\n- Fixed: Hannah could set any state. That could be a security Issue. Hannah can now only edit the states that the adapter actively manages.\n\n### 0.2.0 (2026-04-30)\n\n- New: Send direct messages to Hannah via `sendTo('hannah.<instance>', 'sendDirect', { text: '...' })` — plays via TTS on all satellites and forwards to Telegram, no LLM involved\n- New: Native ioBroker Notification Manager integration — system notifications are automatically forwarded to Hannah and reformulated by the LLM before being spoken and sent to Telegram\n- New: Announcements via `sendTo('hannah.<instance>', 'announce', { rooms: ['Wohnzimmer', 'Küche'], text: '...' })` — plays TTS in specific rooms only, bypasses LLM and Telegram. Use `rooms: ['all']` to address every satellite\n- New: Blockly block **\"Hannah say\"** for direct voice messages\n- New: Blockly block **\"Hannah announce\"** with a list input for target rooms\n- Fixed: Duplicate gRPC connections on reconnect — old stream is now properly closed before opening a new one\n- Fixed: `prepublishOnly` instead of `prepack` — installing the adapter locally no longer triggers a full build\n\n### 0.1.0 (2026-04-30)\n- New: Native AgentTextAnswer via gRPC pushes responses directly to hannah.<instance>.textAnswer\n- New: Dedicated resident_set gRPC command for residents.set_presence() to eliminate the final MQTT dependency\n- New: Satellite state management integrated into adapter via GetSatellites() and gRPC subscriptions (NotifySatelliteRegistered/Gone)\n- New: Automatic satellite state initialization under hannah.<instance>.satellites.- at startup\n- Fixed: Removed redundant residentsPrefix from StateWatcher to prevent duplicate state_update transmissions\n- Fixed: Consolidated resident tracking into ResidentsWatcher for a single, clean telemetry path\n- Fixed: Replaced legacy JavaScript satellite/room logic with native adapter functionality\n- Fixed: Full deprecation of the ioBroker-to-Hannah MQTT feedback channel in favor of gRPC streams\n\n### 0.0.2 (2026-04-28)\n- Fixed: ControlDevice feedback channel — device state updates correctly after Hannah sets a state\n- Fixed: Wildcard pattern matching for subscribed states\n- Fixed: Resident presence subscription restricted to configured instance\n- Fixed: Only forward confirmed states (ack=true) to Hannah; commands (ack=false) are ignored\n- New: Text command state moved into adapter namespace (`hannah.<instance>.textCommand`)\n- New: Automatic reloading of enum subscriptions when rooms or functions change in ioBroker\n\n### 0.0.1 (2026-04-27)\n- Initial release\n- Bidirectional gRPC stream (state updates, resident presence, text commands, SetState)\n- Enum-based device discovery with room × function filtering\n- Extra state prefix support for arbitrary state trees\n- Snapshot-on-connect replaces MQTT retained messages\n\nFor older entries see [CHANGELOG_OLD.md](CHANGELOG_OLD.md).\n\n## License\n\nMIT License\n\nCopyright (c) 2026 M1kad0 <leonie+iobroker@sgessinger.de>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","readmeFilename":"README.md"}